我幾乎肯定我的查詢正在被緩存。這是一個SELECT語句。PDO/MySQL/PHP - 問題與我的查詢結果被緩存
以下是一個示例情況。目前有2個掛單。我有一個腳本,在主頁上顯示掛單通知,通知倉庫是否有新訂單。我下了一個命令來測試「2」是否更新爲「3」,但沒有。我想我的查詢被緩存,因爲當我從phpMyAdmin運行查詢時,它顯示「3」,但是當通過PHP運行時,它只顯示「2」。任何想法如何解決這個問題或禁用特定查詢的緩存?
這裏是我的原代碼
<?php
if(protectThis("1, 2")) :
$pending = $conn->query("SELECT count(*) FROM orders WHERE `status` =0");
$pending2 = $pending->fetch();
$pendingcount = count($pending2);
if ($pendingcount > 0) {
?>
<div class="orange warning">
<p>
<strong>Pending Order Notification</strong>
<br />There are currently <strong><?php echo $pendingcount; ?></strong> pending orders.
<br /><a style="color:white;margin-top:10px;" class="btn btn-inverse" href="orders_pending.php"><i>Click here to view them.</i></a>
</p>
<div class="shadow-out"></div>
</div>
<?php
}
endif;
我試着想禁用特定的查詢緩存讀了之後改變了查詢,並嘗試了以下
SELECT SQL_NO_CACHE count(*) FROM orders WHERE `status` =0
顯然沒有奏效無論是。
我不知道該怎麼做。 :\
任何幫助,非常感謝。
「編輯1」
$pending = $conn->query("SELECT count(*) FROM orders WHERE `status` =0");
// $pending2 = $pending->fetch();
// $pendingcount = count($pending2);
$pendingcount = $pending->rowCount();
if ($pendingcount > 0) {
太棒了。這工作。現在,有什麼辦法可以設置特定的查詢不被緩存?因爲我有另一個頁面顯示註冊用戶列表,並且我添加了一個用戶,直到1-2小時後他才從列表中出現,並且無數頁面刷新。 –
['SQL_NO_CACHE'](http://dev.mysql.com/doc/refman/5.0/en/query-cache-in-select.html)應該像你使用的那樣工作。如果您仍然看到過時的數據,則可能是其他情況。也許一些PHP框架,或者你的瀏覽器? – bfavaretto
由於某種原因,var_dump是一個字符串,而不是整數 –