MySQLi 准备更新不更新数据库
MySQLi prepare update not updating the database
如标题所述,我的MySQL我准备的更新实际上并没有更新数据库。我检查了 MySQL 日志 - 没有错误。这是有问题的代码:
public function update_tweet($tweet)
{
$prepared_update = $this->connection->prepare("UPDATE Tweets
SET `text` = ?, `algo_score` = ?, `has_algo_score` = ?, `baseline_score` = ?, `has_baseline_score` = ?, `is_sanitized` = ?
WHERE `twitter_id` = ?");
mysqli_stmt_bind_param($prepared_update, "sssssss", $tweet['text'], $tweet['algo_score'], $tweet['has_algo_score'], $tweet['baseline_score'], $tweet['has_baseline_score'], $tweet['is_sanitized'], $tweet['tweet_id']);
mysqli_execute($prepared_update) or die(mysqli_error($this->connection));
$prepared_update->close();
}
以及传入推文数组的示例:
Array ( [id] => 2
[twitter_id] => 595463376026734592
[text] => History has a way of repeating itself
[algo_score] => 0
[has_algo_score] => 1
[baseline_score] => 0
[has_baseline_score] => 1
[is_sanitized] => 1
)
和 table 架构:
没有 PHP 错误或 MySQL 错误。我做错了什么?
您的情况:
WHERE `twitter_id` = ?
您要绑定的变量是:
$tweet['tweet_id']
而您得到的数组是:
Array ( [id] => 2
[twitter_id] => 595463376026734592
所以你使用了错误的索引,因为索引 tweet_id
未定义(这只是一个通知,你没有收到任何错误或警告)你的 WHERE
条件永远不会 return 正确,因此 - 没有采取任何行动。
如标题所述,我的MySQL我准备的更新实际上并没有更新数据库。我检查了 MySQL 日志 - 没有错误。这是有问题的代码:
public function update_tweet($tweet)
{
$prepared_update = $this->connection->prepare("UPDATE Tweets
SET `text` = ?, `algo_score` = ?, `has_algo_score` = ?, `baseline_score` = ?, `has_baseline_score` = ?, `is_sanitized` = ?
WHERE `twitter_id` = ?");
mysqli_stmt_bind_param($prepared_update, "sssssss", $tweet['text'], $tweet['algo_score'], $tweet['has_algo_score'], $tweet['baseline_score'], $tweet['has_baseline_score'], $tweet['is_sanitized'], $tweet['tweet_id']);
mysqli_execute($prepared_update) or die(mysqli_error($this->connection));
$prepared_update->close();
}
以及传入推文数组的示例:
Array ( [id] => 2
[twitter_id] => 595463376026734592
[text] => History has a way of repeating itself
[algo_score] => 0
[has_algo_score] => 1
[baseline_score] => 0
[has_baseline_score] => 1
[is_sanitized] => 1
)
和 table 架构:
没有 PHP 错误或 MySQL 错误。我做错了什么?
您的情况:
WHERE `twitter_id` = ?
您要绑定的变量是:
$tweet['tweet_id']
而您得到的数组是:
Array ( [id] => 2
[twitter_id] => 595463376026734592
所以你使用了错误的索引,因为索引 tweet_id
未定义(这只是一个通知,你没有收到任何错误或警告)你的 WHERE
条件永远不会 return 正确,因此 - 没有采取任何行动。