我發現了一個奇怪的結果,以下是和mysqli對象的簡單更新查詢後的狀態:PHP的mysqli affected_rows方法似乎有一個bug
"UPDATE charstate SET name = '-', type = 'The Homemaker' WHERE gameno = 1"
正如你所看到的affected_rows = -1但是...信息是「行匹配:3更改:3警告:0」 並且查詢已更新數據庫。 我正在使用mysqli-> affected_rows來檢查返回-1的成功並且失敗了我的測試,但這是不正確的。
任何想法?
mysqli object {
affected_rows => (int) -1
client_info => (string) mysqlnd 5.0.10 - 20111026 - $Id:
client_version => (int) 50010
connect_errno => (int) 0
connect_error => null
errno => (int) 0
error => (string)
error_list => array(0)
field_count => (int) 0
host_info => (string) 127.0.0.1 via TCP/IP
info => (string) Rows matched: 3 Changed: 3 Warnings: 0
insert_id => (int) 0
server_info => (string) 5.5.27
server_version => (int) 50527
stat => (string) Uptime: 11431 Threads: 6 Questions: 542 Slow queries: 0 Opens: 52 Flush tables: 1 Open tables: 2 Queries per second avg: 0.047
sqlstate => (string) 00000
protocol_version => (int) 10
thread_id => (int) 114
warning_count => (int) ...
你確定查詢確實成功了嗎?文檔清楚地表明,「affected_rows」值爲-1意味着查詢返回了某種錯誤。 – CmdrMoozy
@Cmdr我以爲同樣的事情,但'errno'顯然是'0',不可能是 –
也許是這個問題? http://stackoverflow.com/questions/12569862/php-mysqli-statement-returns-a-single-row-1-rows-affected-and-no-error您是否使用mysqli的準備語句? – CmdrMoozy