James Andrew
James Andrew

Reputation: 7243

Multiple MySQL queries in PHP, skipped

If I'm doing multiple MySQL queries on the same table, occasionally some get skipped.

Why is that?

For example:

<?php
mysql_query("UPDATE `tb` SET `field` = '' WHERE `Id` = '$something'"); 
mysql_query("UPDATE `tb` SET `field2` = '' WHERE `Id` = '$something'"); 
mysql_query("UPDATE `tb` SET `field3` = '0' WHERE `Id` = '$something'");
?>

Sometimes one of the queries will not be executed?

Why is that?

Or is it something wrong with my server not general MySQL?

(Obviously I know now to update the same table in the same query, but before that I was confused as to why it happens, can anyone please explain?)

Upvotes: 0

Views: 148

Answers (3)

tereško
tereško

Reputation: 58444

You do not need to make 3 queries, if you are updating the same rows:

$q = "
    UPDATE table 
    SET field = '', 
        field2 = '',
        field3 = 0 
    WHERE Id = :id
";
$statement = $pdo->prepare( $q );
$statement->bindParam(':id', $something, PDO::PARAM_INT);
$statement->execute();

Also, you should stop using the ancient mysql_* functions. They are not maintained anymore and process for deprecation has already begun.

Maybe you should avoid the 10+ year old API and learn something for this decade: PDO Tutorial for MySQL Developers.

Upvotes: 3

Ben Carey
Ben Carey

Reputation: 16948

Use the following to debug the code:

mysql_query("UPDATE `tb` SET `field` = '' WHERE `Id` = '$something'") or die(mysql_error()); 
mysql_query("UPDATE `tb` SET `field2` = '' WHERE `Id` = '$something'") or die(mysql_error()); 
mysql_query("UPDATE `tb` SET `field3` = '0' WHERE `Id` = '$something'") or die(mysql_error());

UPDATE

Make sure you are escaping $something using:

$something = mysql_real_escape_string($something);

Upvotes: 0

ab_dev86
ab_dev86

Reputation: 1982

debug your code to see if a query fails:

$result = mysql_query("UPDATE `tb` SET `field` = '' WHERE `Id` = '$something'");
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

$result = mysql_query("UPDATE `tb` SET `field2` = '' WHERE `Id` = '$something'");
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

$result = mysql_query("UPDATE `tb` SET `field3` = '0' WHERE `Id` = '$something'");
if (!$result) {
    die('Invalid query: ' . mysql_error());
}

Upvotes: 0

Related Questions