2013-10-15 151 views
1

我想用下面的代碼更新我的表。但更新不成功。更新查詢語法

$sql_edit = "UPDATE subscription SET name=?,email=? WHERE name=? & email=?"; 
     $q_edit = $pdo->prepare($sql_edit); 
     $q_edit->execute(array($_POST['new_name'],$_POST['new_email'],$_POST['old_name'],$_POST['old_email'])); 
+2

使用'&&'或'和'。 –

+2

使用print_r($ pdo-> errorInfo());,檢查錯誤 – Shin

+0

[SQL 101](http://dev.mysql.com/doc/refman/5.6/en/non-typed-operators.html) 。 –

回答

0

使用ANDWHERE條件,而不是作爲&&位運算符

$sql_edit = "UPDATE subscription SET name=?,email=? WHERE name=? AND email=?"; 
    $q_edit = $pdo->prepare($sql_edit); 
    $q_edit->execute(array($_POST['new_name'],$_POST['new_email'],$_POST['old_name'],$_POST['old_email'])); 
0

我懷疑這是因爲你的$ _POST變量之一沒有設置。下面的代碼檢查post變量是否設置,如果沒有設置它們的值爲null。我已更改您使用的&符號,它應該是

$sql_edit = "UPDATE subscription SET name=?,email=? WHERE name=? AND email=?"; 
     $q_edit = $pdo->prepare($sql_edit); 
     $do_update = $q_edit->execute(array(
      (isset($_POST['new_name']) ? $_POST['new_name'] : null), 
      (isset($_POST['new_email']) ? $_POST['new_email'] : null), 
      (isset($_POST['old_name']) ? $_POST['old_name'] : null), 
      (isset($_POST['old_email']) ? $_POST['old_email'] : null) 
     )); 

// Also check that it was executes successfully in your code 
if (!$do_update) 
{ 
echo "Failed to update"; 
} 
else 
{ 
echo "Update successful"; 
} 

我建議你檢查的值在張貼之前,而不是僅僅把他們變成這樣雖然陣列。

另一件事是檢查您的連接沒有被設置爲隱式事務,否則你將需要提交更改到數據庫(或回滾他們):

$pdo->rollBack(); 

$pdo->commit(); 

這隻會工作如果您的列設置爲允許空值。