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

时间:2015-11-03 11:25:33

标签: php html mysql

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

我有一个PHP网页,在从MYSQL中获取数据后会显示一些数据。该网页还为用户提供了进行任何编辑的灵活性,在进行更改并单击“更新”按钮后,文本框中的值将在数据库中更新。 我得到的问题是,只有前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,我提取字段Text并希望在数据库中更新它。

$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());}}

我尝试过调试,但无法这样做。有人可以帮忙吗。

1 个答案:

答案 0 :(得分:1)

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

显示$update并在失败前检查最后一个(但您应该能够通过查看mysql_error()来查找错误)。 我的猜测是你在$langText或其他任何不良角色都有一个简单的引用。 逃避你的变量,这是一个很好的做法:

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