我正在更新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 )
答案 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
表。尝试在WHERE
和UPDATE
个查询中添加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());