PHP MySql查询在更新后显示旧值

时间:2011-05-28 09:03:58

标签: php mysql caching

我正在更新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然后为什么显示旧值?

请帮忙!提前谢谢。

此致 麦克

修改

这是OP尝试的代码:

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 个答案:

答案 0 :(得分:1)

检查UPDATE是否实际执行:

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")));

运行它,让我们(我)知道它产生了什么输出。

答案 1 :(得分:0)

检查您是否拥有数据库的写权限。还检查您的查询缓存?在CLI或者像phpmyadmin / sequel pro之类的东西中加载你的数据库并以root身份运行查询。检查结果。问题很可能归结为权限/缓存。

答案 2 :(得分:0)

我可能在这里走错了路,但可能是因为你正在更新整个Orders表。尝试在WHEREUPDATE个查询中添加SELECT子句,以便它们只影响/获取一行。

答案 3 :(得分:0)

当更新/删除查询中没有WHERE子句时,我遇到了类似的问题。如果缺少WHERE,则较新的MySQL版本将不会执行脚本,无论您有多少行。

Phpmyadmin通常会将此WHERE子句添加到所有内容中,因此它可以在那里工作,而不是在PHP中。例如,如果您浏览表格,您将在Phpmyadmin中看到查询

  

SELECT * FROM TABLE_NAME WHERE 1

答案 4 :(得分:0)

由于将订单用作表名,您可能会收到错误。 “订单”是保留关键字,以便将其用作选择和更新的表名,用反引号(`)符号

将其括起来
"Update `Orders` set visit = visit + 1"

执行Mysql Query也可以更好地跟踪错误。通常我们记录sql语句并根据设置记录或显示错误消息。对于简单的调试,请使用以下stmt:

mysql_query( "SQL STMT" ) or die("MYSQL Error :: ".mysql_errno()."<br>Message: ".mysql_error());