第二份准备好的声明没有解雇

时间:2014-02-27 19:19:16

标签: php mysql sql prepared-statement prepare

谢谢你的时间。

下面我有两个准备好的陈述,查询& QUERY2;

con是连接var

第一个查询运行正常并更新数据库。

第二个查询没有更新任何内容,但它没有给出任何错误。

当我查看“成功”运行后记录的第二个查询时,inserted变量看起来像一个空字符串。即RESTI =''

为什么会这样?我的代码是否以正确的顺序运行第二个查询?

$row = 1;
$con=mysqli_connect("connect info");

if (mysqli_connect_errno())
{
   //echo "Failed to connect to MySQL Error 1: " . mysqli_connect_error();
   //error reporting done here
}
else
{
    $con->autocommit(false);
    $query = $con->prepare("UPDATE table where `INDEX`=?");
    $query2 = $con->prepare("UPDATE table2 where (SELECT column from table where`RESTI`=?)");

    $query->bind_param('i', $row);
    $query2->bind_param('i', $row);

    if($query->execute() == false)
    {
        //Failed!
        /ERROR HANDLING
    }
    else
    {
       //SUCCESS            
    }

    if($query2->execute() == false)
    {
        //Failed!
        /ERROR HANDLING
    }
    else
    {
        //Success       
    }
    $con->commit();
    $query->close();
    $query->close();
}

mysqli_close($con);

1 个答案:

答案 0 :(得分:0)

以下是您的更新声明应如何:

"UPDATE table SET column=<new value to set> WHERE INDEX=?"
"UPDATE table2 SET <col to update>= (SELECT column from table where`RESTI`=?) WHERE condition

确保RESTI是一个唯一字段,子查询只返回标量值