我有以下PHP脚本来更新我的数据库中的mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = {$article_id}" , $con );
,
0
以下代码行实际更新了我的数据库中的views字段:
mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = 1);
现在这行代码似乎无法正常工作,因为每次我回去检查phpmyadmin时,我都会看到views字段仍为fiddle
,但是当我直接插入以下语句时用于测试我的phpmyadmin:
image
我在视图字段中看到一个增量,为什么会发生这种情况?
答案 0 :(得分:4)
需要修复的一些事情。首先,当你应该使用mysqli或PDO时,你正在使用mysql。其次,您使用的是帖子数据而根本没有任何转义。第三,您不需要此选择和更新。你可以在一个声明中完成。
$query = "UPDATE tinyblog SET views = views + 1 WHERE id = (SELECT id FROM tinyblog where id=:article)"
$db = new PDO('mysql:host=localhost;dbname=mydb', 'username', 'password');
$stmt = $db->prepare($query);
$stmt->execute(array(":article"=>$article_id));
我们在这里做的是创建一个带有一个占位符的预备声明。我们将其命名为:article
,但可以将其保留为?
。
然后在执行查询时,您需要通过传入参数来填充缺失的位。这就是我们在array(":article"=>$article_id)
由于它是一个命名参数,我们使用一个关联数组。或者,如果您先调用bindParam,则可以在没有任何参数的情况下调用execute。
答案 1 :(得分:2)
除了你已经获得的关于mysql_函数的所有评论,bobby tables(你很快就会得到)等,请注意你选择你的db 之前运行查询:
mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = {$article_id}" , $con );
mysql_select_db('tinyblog');
为您的代码添加错误处理(如果存在错误,您将看到错误)。
mysql_query(“UPDATE tinyblog SET views = views + 1 WHERE id = {$ article_id}”,$ con)或die(mysql_error($ con));