0

所以我试图根据一个参数更新我的表:

dateEntered 字段必须为空。

我想随机选择 50 行,并将空白的 ownerID 字段更新为“Tester”

这是我所拥有的:

<?php
include("includes/constants.php");
include("includes/opendb.php");



$query = "SELECT * FROM contacts WHERE dateEntered='' ORDER BY RAND() LIMIT 50";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_assoc($result)){
        $firstid = $row['id'];

        $query2 = mysql_query("UPDATE contacts 
                        SET ownerID = 'Tester' 
                   WHERE id = '$firstid'");

        $result2 = mysql_query($query2) or die(mysql_error());

        }

?>

它将更新一条记录,然后退出并给我:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1

选择记录的第一部分工作正常,它的 query2 不会更新所有 50 条记录,只有一条。也许我写错了。

4

2 回答 2

2

mysql_query 只需要一次

    $query2 = mysql_query("UPDATE contacts 
                    SET ownerID = 'Tester' 
               WHERE id = '$firstid'");

    $result2 = mysql_query($query2) or die(mysql_error());

    $result2 = mysql_query("UPDATE contacts 
                    SET ownerID = 'Tester' 
               WHERE id = '$firstid'");
于 2012-05-25T19:37:42.160 回答
1

这些答案是正确的,所以我只会添加一些额外的信息和建议。当您第一次查询 mysql 时,$query1 被设置为结果资源,这对于

   $query1 = mysql_query("UPDATE contacts SET ownerID = 'Tester' WHERE id = '$firstid'");

返回结果 1(布尔值 TRUE),这就是您的第二个查询失败的原因,因为“1”不是有效的 mysql 查询字符串。正如 Greg P 所说,您可以通过消除辅助 mysql 查询来修复当前脚本。

但是,您可以通过使用它来完全改进脚本并减少 sql 调用。

    <?php

    include("includes/constants.php");
    include("includes/opendb.php");

    $query = "UPDATE contacts SET owenerID='Tester' WHERE dateEntered='' ORDER BY RAND() LIMIT 50";
    $result = mysql_query($query) or die(mysql_error());
于 2012-05-25T20:05:41.603 回答