首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP脚本中的增量值不起作用

问PHP脚本中的增量值不起作用
EN

Stack Overflow用户
提问于 2016-11-13 11:49:33
回答 2查看 109关注 0票数 1

我有下面的PHP脚本来更新数据库中的blog view,

代码语言:javascript
复制
<?php   include('header.php');  ?>
<?php
    $article_id = $_POST['article'];
    // echo $article_id;
   $dbhost = 'localhost';
   $dbuser = 'root';
   $dbpass = 'password';
   $con = mysql_connect($dbhost, $dbuser , $dbpass);
   $sql = 'SELECT id,blog_title, blog_body, views FROM tinyblog where id="'. $article_id .'" ';
   // UPDATE VIEWS.
   mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = {$article_id}" , $con );
      mysql_select_db('tinyblog');
      $retval = mysql_query( $sql, $con );

      if(! $retval ) {
         die('Could not get data: ' . mysql_error());
      }

   while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {
   ?>

   <div class="article-blog-indiv">
       <?php    
          echo '<h1>'. $row['blog_title'] .'</h1>';   
        echo '<p>'. $row['blog_body'] .'</p>';
       ?>
   </div>       
<?php           
   }
?>
<?php   include('footer.php');  ?>

下面这一行代码实际上更新了我的数据库中的视图字段:

代码语言:javascript
复制
mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = {$article_id}" , $con );

现在,这一行代码似乎无法工作,因为每次我返回并签入phpmyadmin时,我都会看到视图字段仍然是0,但是当我直接插入下面的语句来测试我的phpmyadmin时:

代码语言:javascript
复制
mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = 1);

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-13 11:57:07

一些需要解决的问题。首先,当您使用mysqli或PDO时,您正在使用mysql。其次,您使用的是post数据,根本没有转义。第三,您不需要这个选择和更新。你可以在一条语句中做到这一点。

代码语言:javascript
复制
$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。

票数 4
EN

Stack Overflow用户

发布于 2016-11-13 11:59:21

除了您已经收到的关于mysql_函数、鲍比桌 (可能很快就会得到)等方面的所有注释之外,注意在运行查询之前选择了db :

代码语言:javascript
复制
mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = {$article_id}" , $con );
mysql_select_db('tinyblog');
  1. 请确保在连接后立即选择数据库。
  2. 将错误处理添加到代码中(因此,如果存在错误,您将看到它们)。 Mysql_query(“= views +1其中id = {$article_id}”,$con )或die(mysql_error($con));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40573476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档