准备好的语句不执行但msqli_stmt_execute返回true

时间:2015-06-10 15:51:59

标签: php mysqli prepared-statement procedural

我在下面有一个插入查询,并使用:mysqli_stmt_execute检查插入是否成功。由于未将值输入到我的数据库中,因此查询未执行。但是,我正处于if状态。我不明白这。我之前已将stmt_prepare包裹在if条件中,并且在成功准备时也返回true。我对bind语句做了同样的事情,现在我在最后的execute语句中使用了它。全部返回true但查询未执行。表的结构是正确的。我甚至在phpmyadmin中执行了一个插入,并将生成的查询粘贴到我的AddToken变量中。

    $con = 'my login credentials'
    $stmt = mysqli_stmt_init($con);
    $AddToken = "INSERT INTO `auth`  VALUES ('',?, ?)";

    mysqli_stmt_prepare($stmt, $AddToken);

    mysqli_stmt_bind_param($stmt, "si", $Token, $ID);

    if (mysqli_stmt_execute($stmt)){
        $message2 = "here";
        // worked
    }
    else{
        //didn't work
        $message2 = "here 2";
    }
    echo $message2;

编辑我不知道问题是什么,但我删除了我的auth表并重新创建它并且它有效吗?

1 个答案:

答案 0 :(得分:1)

您在插入查询中的empty中不需要VALUES()个字符串,因为您只插入两个值 如果您知道

,可能更好地指定列名称
$AddToken = "INSERT INTO `auth` (column1, column2) VALUES (?, ?)";