MySQLi准备更新而不更新数据库

时间:2015-05-13 05:00:00

标签: php mysql mysqli prepared-statement

正如标题所述,我的MySQLi准备更新实际上并没有更新数据库。我检查了MySQL日志 - 没有错误。以下是有问题的代码:

String osName = System.getProperty("os.name"); 
String osVersion = System.getProperty("os.version");

传递的推文数组的一个例子:

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();
}

表格架构:

enter image description here

没有PHP错误或MySQL错误。我做错了什么?

1 个答案:

答案 0 :(得分:3)

你的情况:

WHERE `twitter_id` = ?

您要绑定的变量是:

$tweet['tweet_id']

你得到的阵列是:

Array ( [id] => 2 
        [twitter_id] => 595463376026734592

因此您使用了错误的索引,因为索引tweet_id未定义(它只是一个通知,您没有收到任何错误或警告)您的{{1}因为条件永远不会返回true,所以 - 没有采取任何行动。