php - SQL 多重更新语句

标签 php sql

我需要更新数据库中的 40 行,从 userID 处开始。是一场比赛。我不想确定行号,因为最终这个数据库会很大。

我想做的只是简单地说:

"Update these the next 40 rows with my array where userID = myUserID"



这是我所拥有的:
<?php
// connect to the database and select the correct database
$con2 = mysql_connect("localhost","Database","Password");
if (!$con2)
{
   die('Could not connect: ' . mysql_error());
}

mysql_select_db("ifaves_code", $con2);

$i = 0;
while ($i < 40) {

//cycle through the array
$cycleThrough2 = $updatedUserNames[$i];

//$query = "UPDATE tblUserLinks SET `URLName` = '$cycleThrough2' WHERE userID = '" . $mainUID . "' LIMIT 1";

mysql_query($query) or die ("Error in query: $query");
++$i;

}
mysql_close();
?>

变量 $mainUID设置正确,我遇到的问题是数据库中似乎没有更新。

如何更改我现有的代码以接收我想要的行为?

最佳答案

我不认为这是因为您将查询构建语句注释掉了...

//$query = "UPDATE tblUserLinks SET `URLName` = '$cycleThrough2' WHERE userID = '" . $mainUID . "' LIMIT 1";

如果这只是调试的结果并且在此之前无法正常工作,则必须调用 mysql_error()紧随其后 mysql_query()看看为什么它失败了。
$result = mysql_query($query);
if (!$result) echo mysql_error();

另外,您正在使用 LIMIT 1最后,但userID WHERE 子句永远不会改变。因此,您在每个循环中重复更新同一行 40 多次。您需要的是在 WHERE 子句中识别已修改的行并排除它们的方法。否则,同一行(第一个匹配项)将始终被 LIMIT 1 捕获。并更新。

关于php - SQL 多重更新语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7057013/

相关文章:

c# - 将 sql 存储过程用于 yes no 输出

sql - 在 Django 查询中提供一个 LIMIT 参数而不需要获取 QuerySet 的一部分

php - MySQL选择列直到数字

java - 如何使用 PHP 的参数实例化/调用 java 类?

mysql - 在不使用类型的情况下删除 SQL 查询中的查询

php - 如何使用 PHP 客户端库在 GA4 中返回指标总计?

php - sphinx 只重置一个过滤器

php - SQL 更新查询无法正确处理 php 数据

php - 组合 mySQL 语句

php - Storage::delete 不删除文件。路径正确,文件权限正确