2011-09-16 125 views
1

我正在嘗試運行表的特定行的更新,並在每次運行更新時增加一列的內容。但是在某些時候,查詢不會運行,也不會產生異常。有誰知道爲什麼會發生這種情況?我曾嘗試以下:mysql_query&update查詢未執行

$intVersion = $this->intVersion + 1; 
$strSql=<<<EOT 
UPDATE $this->strQueryTable SET version = '$intVersion' WHERE id = $this->id; 
EOT; 
$blnQueryOk = mysql_query ($strSql); 

$intVersion = $this->intVersion + 1; 
$strSql =<<<EOT 
UPDATE $this->strQueryTable SET version = $intVersion WHERE id = $this->id; 
EOT; 
$blnQueryOk = mysql_query ($strSql); 

$strSql =<<<EOT 
UPDATE $this->strQueryTable SET version = version + 1 WHERE id = $this->id; 
EOT; 
$blnQueryOk = mysql_query ($strSql); 

,並在所有的情況下:

if (!$blnQueryOk) { 
    throw new Exception(mysql_error()); 
    return false; 
} 

他們全部失敗,但不會產生異常更新一些時間。

+0

首先 - 使用此語法{$ foo的}用於使變量到SQL你的情況 – SergeS

+0

爲$這個 - > ID有點不你期待什麼呢? – Randy

+2

如果您認爲查詢失敗,請使用http://us2.php.net/mysql_error echo $ strSql並查看您實際發送的內容,並且您應該真正使用某種轉義策略:http:/ /us2.php.net/manual/en/function.mysql-real-escape-string.php – Jody

回答

0
  1. 它可能是它實際上是數據庫連接調用失敗(由於一些數據庫相關的問題,如網絡問題或太多的mysql連接等)。你可以嘗試這樣做:
    • 在你的mysql_connect()調用後,確認數據庫連接資源確實已經創建,並且在返回值錯誤的情況下,開始拋出異常。

  2. 背後mysql_error()不生產任何東西一個非常常見的原因是,當你在同一個進程中打開多個數據庫連接。爲了避免這種情況:
    • 在你所有的mysql_query()mysql_error()調用中,也開始傳遞db連接資源作爲參數。