gpt4 book ai didi

PHP:mySQL:无法更新数据库中的所有行。表正在部分更新

转载 作者:行者123 更新时间:2023-11-29 11:54:08 25 4
gpt4 key购买 nike

我遇到了一种奇怪的行为,我无法成功更新数据库中的所有行。

我有一个 PHP 网页,从 MYSQL 获取数据后显示一些数据。该网页还为用户提供了进行任何编辑的灵 active ,进行更改并单击“更新”按钮后,文本框中的值将在数据库中更新。我遇到的问题是仅更新前 60 行,而不是全部 177 行。

这是一个小网页,其中包含用户更新后的值。比方说,用户将 Rihaana 更新为 Eminem。

ID      FieldText
01 Slim Shady
02 Dr. Dre
05 Rihaana -->> 'Eminem'

使用 AJAX,我已将 json 文件发送到 php 文件,在其中提取值并在数据库中更新它。我的 JSON 如下所示:

array(2) {
["fieldText"]=>
array(177) {
[0]=>
string(55) "Slim Shady"
[1]=>
string(24) "Dr Dre"
[2]=>
string(27) "Eminem"
}
["ID"]=>
array(177) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "5"
}}

生成的 JSON 是有效的。JSON的实际长度是177

将 json 发送到 php 文件后,我将 json 代码拆分为 2 个数组,两个数组的长度均为 177。

现在我接下来要做的是对于每个 ID,我正在获取字段文本并希望在数据库中更新它。

$jsonData = json_decode($_POST['postData'],true);
$length = count($jsonData['ID']); ## The length is 177 in my json
$ID = $jsonData['ID']; ## The length is 177 in my json
$fieldText = $jsonData['fieldText']; ## The length is 177 in my json

现在,使用下面的代码,我使用 for 循环更新行中的所有值,但此循环仅运行 60 次迭代,而不是 177 次(如预期):

for($j=0; $j< count($jsonData['ID']); $j++) {

$langText = $fieldText[$j];
$id = (int) $ID[$j];

$update = "UPDATE languageUpdate SET fieldText = '$langText'
WHERE ID = $id";
//echo "$update";
$mysqli->query($update) or die(mysql_error());}}

我尝试进行调试,但无法做到这一点。有人可以帮忙吗?

最佳答案

如果有 177 个项目,则问题出在查询上,而不是循环上。它可能会失败,然后转到 die 语句。

显示$update并检查失败前的最后一个(但您应该能够通过查看mysql_error()找到错误)。我的猜测是您在 $langText 或任何其他不良字符中有一个简单的引号。转义变量,这是一个很好的做法:

$update = "UPDATE languageUpdate
SET fieldText = '".$mysqli->real_escape_string($langText)."'
WHERE ID = $id";

关于PHP:mySQL:无法更新数据库中的所有行。表正在部分更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33497927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com