PHP MySql Query показывает старое значение после обновления - PullRequest
3 голосов
/ 28 мая 2011

Я обновляю значение в таблице sql и затем печатаю значение, оно все еще показывает старое значение.

<?
print_r(mysql_fetch_array(mysql_query("select visits from Orders")));
mysql_query("update Orders set visits=visits+1");
print_r(mysql_fetch_array(mysql_query("select visits from Orders")));
?>

Он выводит 1, а затем снова 1. Второе значение должно быть 2. Когда я проверяю в PhpMyAdmin, это 2, тогда почему он показывает старое значение?

Пожалуйста, помогите! Заранее спасибо.

С уважением, Mike

Edit:

Это код, который опробовал ОП:

mysql_connect("localhost","mayankx_tt","111111");
mysql_select_db("mayankx_tt") or die(mysql_error()); 
print_r(mysql_fetch_array(mysql_query("select visits from Orders")));
mysql_query("update Orders set visits=visits+1");
print_r(mysql_fetch_array(mysql_query("select visits from Orders"))); 

И его вывод:

Array ( [0] => 4 [visits] => 4 ) Array ( [0] => 4 [visits] => 4 )

Ответы [ 5 ]

1 голос
/ 28 мая 2011

Проверьте, действительно ли выполняется ОБНОВЛЕНИЕ:

mysql_connect("localhost","mayankx_tt","111111");
mysql_select_db("mayankx_tt") or die(mysql_error());

# Checking PRE Value
print_r(mysql_fetch_array(mysql_query("select visits from Orders")));

# Attempting to Modify
if( !mysql_query("update Orders set visits=visits+1") ){
  echo 'Error Occurred: #'.mysql_errno().' '.mysql_error();
}else{
  echo 'UPDATE Processed OK';
}

# Check POST Value
print_r(mysql_fetch_array(mysql_query("select visits from Orders")));

Запустите это и дайте нам (мне) знать, какой вывод он произвел.

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

Возможно, вы получаете ошибку из-за использования заказов в качестве имени таблицы. "Заказы" Зарезервированное ключевое слово, поэтому, чтобы использовать его в качестве имени таблицы для выбора и обновления, заключите его в символ обратной черты (`)

"Update `Orders` set visit = visit + 1"

Для выполнения Mysql Query лучше также отслеживать ошибку. как правило, мы регистрируем SQL-оператор и либо регистрируем, либо показываем сообщение об ошибке в соответствии с настройкой. Для простой отладки используйте следующую команду:

mysql_query( "SQL STMT" ) or die("MYSQL Error :: ".mysql_errno()."<br>Message: ".mysql_error());
0 голосов
/ 28 мая 2011

Я могу ошибиться, но это может быть потому, что вы обновляете всю таблицу Orders. Попробуйте добавить предложение WHERE к запросам UPDATE и SELECT, чтобы они затрагивали / выбирали только одну строку.

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

Я столкнулся с подобной проблемой, когда в запросе обновления / удаления не было предложения WHERE. Более новые версии MySQL не будут выполнять сценарий, если отсутствует WHERE, независимо от того, сколько у вас строк.

Phpmyadmin обычно добавляет это предложение WHERE ко всему, поэтому оно может работать там, а не в PHP. Например, если вы просматриваете таблицу, вы увидите в Phpmyadmin запрос

SELECT * FROM TABLE_NAME WHERE 1

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

Убедитесь, что у вас есть права на запись в базу данных.Также проверьте свой кеш запросов?Загрузите свою базу данных в CLI или что-то вроде phpmyadmin / sequel pro и выполните запрос от имени пользователя root.Проверьте результаты.Скорее всего, проблема будет связана с разрешениями / кэшированием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...