为什么这个预处理语句总是返回-1行?

时间:2014-11-29 21:19:26

标签: php mysqli prepared-statement

我在这个mysqli准备好的声明中遇到了很多麻烦,我无法弄清问题是什么。我已经完成了大量的故障排除,所以要开始我只是向您展示代码(正如您所看到的,它目前仅在本地工作):

$link = mysqli_connect("localhost", "root", "", "dbName");

if($stmt = $link->prepare("INSERT INTO created_memes (created_meme_fileName, created_meme_title, created_meme_likes, created_meme_datePosted) VALUES (?, ?, ?, ?)")){
    $stmt->bind_param('sssd', $fileName, $title, $likes, $datePosted);

    $title = $_POST["memeTitle"];
    $likes = 0;
    $dataPosted = date("Y-m-d H:i:s");


    $stmt->execute();

    printf($stmt->affected_rows);

    echo "Link established; query unsuccessful.";

    $stmt->close();

} else {
    echo "Link unsuccessful.";
}

简单地回顾一下:

$ fileName变量在代码的前面定义,因此不是问题。即使它是,我也尝试用其余变量重新定义它,我仍然受到-1行的影响。

我已经尝试将所有变量设置为静态字符串,以防它们出现问题,但它仍然无效。

我已经五次检查了连接信息,表名和列名;他们都是正确的。

我已经尝试过这两个作为你现在看到的if语句,而没有if语句。仍然无法工作。

我已经尝试使用bind_param在定义变量之前,正如您现在所看到的那样,以及它们之后的定义,希望这可能很重要。它没有。仍然没有工作。

此时我已经撕掉了所有的头发,但仍然没有找到问题。任何帮助都将非常感谢!

1 个答案:

答案 0 :(得分:1)

来自documentation

-1 indicates that the query returned an error.

尝试echo $stmt->error;查看出现了什么问题

我猜测这是因为您按名称指定了4个要插入的字段,然后提供5个要插入的数据。