【发布时间】:2013-07-31 04:46:56
【问题描述】:
我从 php $stmt->bind_param 得到了奇怪的结果,这就是发生的事情......如果我这样做 $status="某事"; $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
【问题讨论】:
-
你能用执行和参数等显示完整的代码吗?
-
查询执行但数据库中的值没有更新?这非常很难相信......查询更有可能根本没有执行。无论如何,您发布的代码看起来不错,所以问题可能出在其他地方。
-
$stmt->affected_rows在运行$stmt->execute()后返回什么? -
代码显示 :) 其实很简单我不得不提一下,这是从 js 调用的 .ajax() 调用的,这有什么关系吗?
标签: php prepared-statement sqlbindparameter