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

如何使用MySQL在PHP中执行多个更新查询?,php,mysql,sql,Php,Mysql,Sql,我必须使用PHP的mysql_query()函数在单个查询中执行多个更新查询。 我附加多个update语句以形成单个查询,从而将参数传递给mysql_query()函数。最后我得到了一个组合查询,但发现它是错误的。当我在执行期间运行那个查询时,我得到的错误是“无效查询”。我不明白发生了什么事,所以请帮我解决这个问题。我很痛苦。我尽力了。我给我的代码以供参考 在这里,我通过查询字符串获取变量的值 我的查询开始:localhost/ticker/publish ticker.php?i=1,2,3&

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

在这里,我通过查询字符串获取变量的值

我的查询开始:
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\u查询($sql2);
如果(!$query3)
{
死亡(“无效交付”);
}
其他的
{
回声';
回显“警报”(“股票代码已成功更新”);
echo'location.href=“add_ticker.php”;
回声';
}

请帮帮我。

在PHP中使用常规mysql api无法做到这一点

将唯一查询(不支持多个查询)发送到服务器上与指定链接标识符关联的当前活动数据库

可以使用mysqli和函数来完成

另见:


手册规定您不能将其用于多个查询


您可以使用mysqli或pdo来实现此目的。

让我来解释一下“您应该使用pdo或mysqli”。您不能使用
mysql\u query
在一次调用中运行多个查询。如果你想这样做,你需要使用
mysqli\u multi\u query()
。你可能想看看如何使用SQL“IN”语句,比如
update tbl\u ticker2 set twitter\u flag=1,last\u used='$todaysdate',where id IN($tid1,$tid2,$tid3)然后看看让您的foreach语句生成与语句匹配的条件列表OK@andrewsi….我将使用mysqli_multi_query()…但是为此…我应该如何将多个语句组合成一个语句?@andrewsi我的组合查询出错了。所以请检查一下。我知道使用mysqli是可能的,但我不知道PDO有可能——你有链接吗?谢谢,这很有趣!
$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>';         

    }