2015-05-13 2 views
2

Как указано в заголовке, мое подготовленное MySQLi обновление фактически не обновляет базу данных. Я проверил журналы MySQL - никаких ошибок. Вот код, о котором идет речь:MySQLi подготовить обновление, не обновляя базу данных

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 
) 

и таблица схемы:

enter image description here

Нет PHP ошибки или Ошибки MySQL. Что я делаю не так?

+0

Проверьте журналы запросов mySQL, чтобы узнать, действительно ли что-то происходит? Mine находится в '/ usr/local/mysql/data/mysql.log'. – Luke

+0

Спасибо за комментарий - это было просто неправильное письмо. Noob status :) – Tylerlee12

ответ

3

Ваше состояние:

WHERE `twitter_id` = ? 

переменной, что вы связываете это:

$tweet['tweet_id'] 

В то время как массив, вы получаете это:

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

Так вы используя неверный индекс, и поскольку индекс tweet_id не определен (это просто уведомление, вы не получаете никаких ошибок o r) ваше состояние WHERE никогда не вернется, поэтому - никаких действий не предпринимается.

+0

Мой бог, который смущает ... спасибо. Любой способ сообщить уведомления также? У меня есть 'error_reporting (E_ALL);' и 'ini_set (" display_errors ", 1);' установлен на моей выходной странице. – Tylerlee12

+1

Добро пожаловать, это случается со всеми время от времени, так что все в порядке. 'E_ALL' должен показывать уведомления. –

Смежные вопросы