Errno(0)未能插入预准备语句时

时间:2015-02-20 02:42:42

标签: php mysql

我在使用预处理语句将数据插入到表中时遇到错误,我被卡住了因为它给了我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()

1 个答案:

答案 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;