簡體   English   中英

PHP和MySQLi准備的更新正在更新所有行

[英]php and mysqli prepared update is updating all rows

我發現使用mysqli進行的預准備更新正在更新表中的所有行,而不是WHERE子句中引用的行。 我為此而感到沮喪。 我使用下面的簡化代碼作為測試運行,但仍然會發生。 我正在使用PHP 5.3.18和客戶端API庫版本5.0.96。

$mysqli = new mysqli("localhost", "user", "pass", "db");
if (mysqli_connect_errno()) {
  printf("Connect failed: %s\n", mysqli_connect_error());
  exit();
}

$query = "UPDATE test SET first_name = ? WHERE last_name = ?";
if(!$stmt = $mysqli->prepare($query)) {
  die("Unable to prepare<br />");
}

$first = 'test';
$second = 'something';

$stmt->bind_param("ss", $first, $second);
if (!$stmt->execute()) {
  die("Could not execute<br />");
}

echo "done";

查詢將執行,但是表中所有行的first_name都會更新。 是的,有一個帶有“某物”的姓氏。 不,其他三個測試行沒有last_name = something。 庫有問題嗎? 我的PHP配置? 也許睡眠不足? 什么?

哦...此外...如果我使用類似“ UPDATE test SET first_name =?WHERE id =?”的查詢 並更新參數以使用id,它可以工作。 它僅更新單行。 那么,為什么不能在WHERE子句中使用last_name列呢?

我讓服務器技術人員將服務器更新為MySql 5.5,現在問題已解決。 我猜想它與庫或MySql安裝有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM