PHP脚本有什么作用,增加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)) {

?>

echo '

'. $row['blog_title'] .'

';

echo '

'. $row['blog_body'] .'

';

?>

}

?>

以下代码行实际更新了我的数据库中的views字段:

mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = {$article_id}" , $con );

现在这行代码似乎不起作用,因为每次我回去检查phpmyadmin时,我看到views字段仍为0,但是当我直接插入以下语句来测试我的phpmyadmin时:

mysql_query("UPDATE tinyblog SET views = views + 1 WHERE id = 1);

我看到了视野领域的增量,为什么会发生这种情况?

解决方法:

一些需要修复的事情.首先,当你应该使用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”=> $article_id)

由于它是一个命名参数,我们使用一个关联数组.或者,如果您先调用bindParam,则可以在没有任何参数的情况下调用execute.

标签:php,mysql,phpmyadmin

来源: https://codeday.me/bug/20190929/1832904.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值