为什么这个预准备语句总是返回受影响的 -1 行


Why does this prepared statement always return -1 rows affected?

我对这个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 indicates that the query returned an error.

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

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