0

我从 php $stmt->bind_param 得到了奇怪的结果,这就是发生的事情......如果我这样做 $status="something"; $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
4

2 回答 2

0

您在第一句中使用了 $var 变量,在第二句中使用了 $idcarrito。这可能是问题吗?

于 2013-07-30T20:55:53.770 回答
0

我写了一个扩展mysqli的类。它会自动处理所有的 bind_params 并使 mysqli 的使用变得容易。你可以在这里下载课程: better_mysqli.php

这个页面显示了它的基本用法:basic_usage.php

此页面显示详细用法:detailed_usage.php

于 2013-07-30T21:11:40.003 回答