Update table based on condition (While Loop)

老子叫甜甜 提交于 2019-12-13 20:14:06

问题


So I am trying to update my table based on a singe parameter:

The dateEntered field must be blank.

And I want to randomly select 50 rows, and update the blank ownerID fields to "Tester"

Here is what I have:

<?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());

        }

?>

It will update a single record, then quit and give me:

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

The first part that selects the records works fine, its query2 that won't update all 50 records, just one. Maybe I am writing this wrong.


回答1:


mysql_query needs only one time

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

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

to

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



回答2:


These answers are spot on, so I will only add some additional information, and a suggestion. When you are querying mysql the first time, $query1 is being set to the result resource, which for

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

returns a result of 1 (Boolean TRUE), which is why your second query failed, cause "1" isn't a valid mysql query string. As Greg P stated, you can fix your current script by eliminating the secondary mysql query.

However, you could improve the script entirely, and make fewer sql calls, by using this.

    <?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());


来源:https://stackoverflow.com/questions/10760334/update-table-based-on-condition-while-loop

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!