增加PHP脚本中的值不起作用

时间:2016-11-13 11:49:33

标签: php mysql phpmyadmin

我有以下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

我在视图字段中看到一个增量,为什么会发生这种情况?

2 个答案:

答案 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');
  1. 确保在连接后立即选择数据库。
  2. 为您的代码添加错误处理(如果存在错误,您将看到错误)。

    mysql_query(“UPDATE tinyblog SET views = views + 1 WHERE id = {$ article_id}”,$ con)或die(mysql_error($ con));