我在使用预处理语句将数据插入到表中时遇到错误,我被卡住了因为它给了我errno(0),我不知道那个错误是什么,你能帮帮我吗?谢谢!
<?php
session_start();
include '../conexion.php';
$nombre = $_POST['Nombre'];
$apellido = $_POST['Apellido'];
$mail = $_POST['Mail'];
$telefono = $_POST['Telefono'];
$ultimaventa = $_POST['Numeroventa'];
$totalcomprado = 0;
$ultimomonto = $_POST['Total'];
if($cons = $mysqli->prepare("select 1 from clientes WHERE Mail=?"));
$cons->bind_param('s',$mail);
$cons->execute();
$cons->store_result();
$existe=$cons->num_rows > 0;
if ($existe) {
$totalcomprado=totalcomprado+$ultimomonto;
if(!($cons=$mysqli->prepare("UPDATE clientes SET nombre=?,apellido=?,Mail=?,telefono=?,ultimaventa=?,ultimomonto=?,totalcomprado= ? WHERE Mail=?"))){
echo "fallo en la preparacion de la consulta:(".$mysqli->errno.")" .$mysqli->error;
}
$cons->bind_param('sssssiis',$nombre,$apellido,$mail,$telefono,$ultimaventa,$totalcomprado,$mail);
if(!($cons->execute())){
echo "fallo ejecutando la consulta:(".$mysqli->errno.")" .$mysqli->error;
}
$cons->close;
} else {
$totalcomprado=$ultimomonto;
if(!($cons=$mysqli->prepare("INSERT into clientes id,nombre,apellido,Mail,telefono,ultimaventa,ultimomonto,totalcomprado values(?,?,?,?,?,?,?)"))){
echo "fallo en la preparacion de la consulta:(".$mysqli->errno.")" .$mysqli->error;
}
$cons->bind_param('sssssis',$nombre,$apellido,$mail,$telefono,$ultimaventa,$totalcomprado);
if(!($cons->execute())){
echo "fallo ejecutando la consulta:(".$mysqli->errno.")" .$mysqli->error;
}
}
Ps。:要插入的数据类型是好的,唯一一个整数是&#34; ultimomonto&#34;
这是错误:
fallo en la preparacion de la consulta:(0)
(!)致命错误:在第35行的C:\ wamp \ www \ mumushop \ compras \ verificar.php中的非对象上调用成员函数bind_param()
答案 0 :(得分:1)
您错过了INSERT
声明中列名称的括号:
if(!($cons=$mysqli->prepare("INSERT into clientes (id,nombre,apellido,Mail,telefono,ultimaventa,ultimomonto,totalcomprado) values(?,?,?,?,?,?,?)"))){
还有另一个与错误无关的问题:
if($cons = $mysqli->prepare("select 1 from clientes WHERE Mail=?"));
;
结束此if
语句,因此您根据这是否成功,不会使用它来执行任何操作。我想你希望所有其余的代码都在这里,所以它应该是:
if($cons = $mysqli->prepare("select 1 from clientes WHERE Mail=?")) {
$cons->bind_param('s',$mail);
$cons->execute();
$cons->store_result();
$existe=$cons->num_rows > 0;
if ($existe) {
...
} else {
...
}
}
未定义的常量错误来自这一行:
$totalcomprado=totalcomprado+$ultimomonto;
您在$
之前错过了totalcomprado
,它应该是:
$totalcomprado=$totalcomprado+$ultimomonto;
或者你可以把它写成:
$totalcomprado += $ultimomonto;