MySQL запрос не работает без ошибок, ничего - PullRequest
6 голосов
/ 31 мая 2011
      $result53543534 = mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'")
or die(mysql_error());

но не обновляет.проверил $battle_get['username'] и имя пользователя там.я не получаю никаких ошибок или чего-то другого, просто не добавляю ...

Любая помощь была бы очень хороша, спасибо заранее

Ответы [ 6 ]

4 голосов
/ 31 мая 2011

Посмотрите, каков результат из mysql_affected_rows():

if ( ! $result53543534 = mysql_query( "UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'") ) {
    die( mysql_error() );
} else {
    echo "Number of rows affected: " . mysql_affected_rows() . "<br>";
}

Возможно, у меня не совсем правильный синтаксис, но я надеюсь, что вы поняли идею.Если результат равен 0, вы не указываете синтаксис WHERE, чтобы он фактически ссылался на любую строку (и).

Если результат больше 0, то вы ошибаетесь, если считаете, что он не влияет на строки.Возможно, это не повлияет на строки, которые вы считаете нужными, но это другая проблема.

Кроме того, echo ваш оператор sql, так что вы действительно можете точно увидеть, что он делает.

0 голосов
/ 07 февраля 2019

Произошло со мной то же самое, что я сначала сделал, чтобы воспроизвести его на MySQL Workbench, а затем использовал предложения SQL оттуда, я обнаружил (не уверен, почему), что работает добавление скобок после предложения WHERE:

UPDATE users SET credit = credit + 1 WHERE (`email`= '{$battle_get['username']}')
0 голосов
/ 30 мая 2014

Предоставьте разрешение UPDATE пользователю в соединении, которое вы используете для этого. То, что пользователь может выбирать и вставлять, не означает, что они также могут автоматически выполнять ОБНОВЛЕНИЕ, вам необходимо явно предоставить ему разрешение на ОБНОВЛЕНИЕ. Кроме того, mysql_error () не будет отображать никаких ошибок, поскольку ваш оператор SQL верен, поэтому ошибка не отображается.

0 голосов
/ 31 мая 2011

Я бы предложил изменить код следующим образом, это позволит вам изучить SQL-запрос. Попробуйте протестировать SQL-запрос, чтобы увидеть, выполняется ли он вообще. Вы также можете запустить пользователей DESCRIBE на консоли mysql, чтобы узнать, какую информацию вы получаете.

$sql = "UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'"
echo $sql;
if ( ! $result53543534 = mysql_query($sql) ) {
    die( mysql_error() );
} else {
    echo "Number of rows affected: " . mysql_affected_rows() . "<br>";
}
0 голосов
/ 31 мая 2011

вы забыли о фиксации запроса к базе данных, попробуйте транзакцию

mysql_query("START TRANSACTION");
mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'");
mysql_query("COMMIT");
0 голосов
/ 31 мая 2011

Попробуйте протестировать

$email = $battle_get['username'];
UPDATE users SET credit=credit+1 WHERE email= '$email'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...