如何使用MySQL在PHP中执行多个更新查询?

时间:2014-06-16 17:56:01

标签: php mysql sql

我必须使用PHP的mysql_query()函数在单个查询中执行多个更新查询。 我附加多个更新语句以形成单个查询以将参数传递给mysql_query()函数。所以最后我得到一个组合查询,但发现它是错误的。当我在执行期间运行该查询时,我收到错误,因为"查询无效"。我不明白发生了什么错误,所以请帮我解决这个问题。我很痛苦。我已经尽力了。我正在给我的代码供参考。

这里我通过querystring

获取varibles的值

我的查询:localhost/ticker/publish-ticker.php?i=1,2,3&j=3,4

if(isset($_GET['i']))
{
    $selected_tickers = $_GET['i']; 
}

if(isset($_GET['j']))
{
    $selected_twitters = $_GET['j'];    
}  

我在这里形成查询

$sql2 = "";
if(count($sel_ticker_array) > 0 )
{
foreach($sel_ticker_array as $value2)
{
    $tid1 = preg_replace('/[^0-9]/','', $value2);                               
    $sql2 .= "update tbl_ticker2 set ticker_flag=0 where id!=$tid1;";

}



foreach($sel_ticker_array as $value)
{
    $tid3 = preg_replace('/[^0-9]/','', $value);                                
    $sql2 .= "update tbl_ticker2 set ticker_flag=1,last_used='$todaysdate' where id=$tid3;";

}

}


if(count($sel_twitter_array) > 0)
{
foreach($sel_twitter_array as $value)
{
    $tid = preg_replace('/[^0-9]/','', $value);                             
    $sql2 .= "update tbl_ticker2 set twitter_flag=0 where id!=$tid;";

}



foreach($sel_twitter_array as $value)
{
    $tid = preg_replace('/[^0-9]/','', $value);                             
    $sql2 .= "update tbl_ticker2 set twitter_flag=1,last_used='$todaysdate' where id=$tid;";

}
}

这里我正在执行它,但我得到的输出是"无效的查询"

$query3 = mysql_query($sql2);

    if(!$query3)
    {
        die("Invalid Delivery");
    }
    else
    {
        echo '<script>';
        echo 'alert("Ticker Updated Successfully");';
        echo 'location.href="add_ticker.php"';
        echo '</script>';         

    }

请帮帮我。

2 个答案:

答案 0 :(得分:0)

你不能使用PHP中的常规mysql-api来做到这一点。

mysql_query()向与指定link_identifier关联的服务器上的当前活动数据库发送唯一查询(不支持多个查询)。

可以使用mysqli和mysqli_multi_query()函数完成。

也读到:

答案 1 :(得分:0)

手动声明您不能将其用于多个查询。

http://php.net/manual/en/function.mysql-query.php

你可以使用mysqli或pdo。