2013-05-07 48 views
0

我試圖調用一個函數來更新我的mysqli數據庫,並在發生錯誤時報告回來。我在我的測試文件中有這樣的迄今:MYSQLi中的未知索引報告錯誤

<?php 

$success = test("cat",17); 
echo $success; 
echo "<br />"; 


function test($name, $number){ 
    $db = new mysqli("localhost","root","","test"); 
    if($db->connect_errno){ 
     return "Failed to connect to MYSQL Database: [" . $db->connect_errorno . "]" . $db->connect_error; 
    } 
    if(!($stmt = $db->prepare("UPDATE `test` SET `name` = ? WHERE `number` = ?"))){ 
     return "prepare failed: [" . $db->errno . "]" . $db->error; 
    } 
    if(!($stmt->bind_param('si', $name, $number))){ 
     return "bind failed: [" . $db->errno . "]" . $db->error; 
    } 
    if(!($stmt->execute())){ 
     return "execute failed: [" . $db->errno . "]" . $db->error; 
    } 
    $stmt->close(); 
    return "Successfully updated database!"; 
} 

?> 

,並在測試我有(貓,17),它返回成功,即使是一些17沒有列,而我什麼也看不到在數據庫中更改。如果無法在WHERE子句中找到數字,我該如何才能正確地返回失敗?

+0

這不會改變任何記錄,或不返回任何行的查詢,是不是** **「失敗」 。它只是一個空的結果集。 – 2013-05-07 17:34:09

回答

2

後​​完成,檢查$stmt->affected_rows大於零:

if(!($stmt->execute())){ 
    return "execute failed: [" . $db->errno . "]" . $db->error; 
} 

if(!$stmt->affected_rows) { 
    return "no rows updated"; 
} 
+0

完美的工作!謝謝! – user2359302 2013-05-07 18:16:54