我从php $ stmt-> bind_param得到了奇怪的结果,这里发生了什么...如果我这样做 $状态="东西&#34 ;; 是$ var = 5;
$consulta="UPDATE carrito SET status='$status' WHERE id_carrito='$var'";
准备并执行它有效......但是一旦我这样做了:
$consulta="UPDATE carrito SET status=? WHERE id_carrito=?";
if($stmt=$mysqli->prepare($consulta))
{
$stmt->bind_param("si",$status,$var);
.
.
.
它停止工作,vars,没关系我在执行后打印它们并且它们实际上具有正确的值,我没有从php获得任何错误,查询执行,它只是不在mysql db上保存值,我想提一下这不是我第一次使用准备好的陈述我已经做了一段时间了,我现在还不是专家,但是在我知道有什么事之前我从未想过这个bind_param有问题,但我没有找到任何信息,谢谢。
这里是完整的代码
/*_____________________ DATOS DE CONEXION _________________________*/
$mysqli = new mysqli('localhost', 'root', '', 'ambarb');
if(mysqli_connect_errno())
{
echo "Connection Failed: " . mysqli_connect_errno();
exit();
}
/*_____________________ fin de los datos de conexion _______________*/
$idcarrito=$_POST["id"];
$status="cancelado";
$resultado=array();
$consulta="UPDATE carrito SET status='$status' WHERE id_carrito=$idcarrito";
if($stmt=$mysqli->prepare($consulta))
{
//$stmt->bind_param("si",$status,$idcarrito);
$stmt->execute();
if($stmt->errno==true)
{
$resultado['status']='error';
}
else
{
$resultado['status']='ok';
}
$stmt->close();
}
else
{
$resultado['status']='error al preparar la consulta PHP ERROR CODE ';
}
echo json_encode($resultado);
//echo "el ide del carrito ".$idcarrito;
$mysqli->close();
?>
that code actually works, prints $resultado['status']=ok, but i think is not the point, because as soon as i change for this $consulta="UPDATE carrito SET status=? WHERE id_carrito=?"; with respective bind_param it stops working, i mean prints $resultado['status']=ok, but doesn't make anychange at database
答案 0 :(得分:0)
你在第一句话中使用了$ var变量,在第二句中使用了$ idcarrito。 这可能是问题吗?
答案 1 :(得分:0)
我写了一个扩展mysqli的类。它自动处理所有bind_params并使mysqli易于使用。您可以在此处下载课程:better_mysqli.php
此页面显示了它的基本用法:basic_usage.php
此页面显示详细用法:detailed_usage.php