更新mysqli_query中出现可捕获的致命错误


Catchable fatal error proplem in update mysqli_query

我试图将此代码放入我的页面

<?php
 include'../../includes/config.php';
mysqli_query($con, 'UPDATE action SET watch = watch+1 WHERE title = $title ');
?>

我收到这个错误

可捕获的致命错误:类mysqli的对象无法在中转换为字符串

问题出在$con变量上,因为当我删除它时,问题就解决了。

请帮帮我,原谅我拼写错误,因为我是阿拉伯人。

我不确定你是否解决了这个问题,但我会提交以下答案以防万一。

由于以下原因,此查询失败。

mysqli_query($con, 'UPDATE action SET watch = watch+1 WHERE title = $title ');
                           ^^^^^^                                   ^^^^^^

首先,您使用一个MySQL保留字"action",然后$title表示为字符串。

您需要用记号将"action"列名包装起来,用引号将$title包装起来,如果数据中包含MySQL会抱怨的任何内容,例如撇号,则可能会转义该数据。

即:

$title = mysqli_real_escape_string($con, $title);
mysqli_query($con, "UPDATE `action` SET watch = watch+1 WHERE title = '$title' ");

然后在评论中添加了$con=mysqli_connect("host","db","pass");

语法为:

  • 主机
  • 用户名
  • 密码(如果需要)
  • 数据库

参考文献:

  • http://php.net/manual/en/function.mysqli-connect.php
  • http://php.net/manual/en/mysqli.construct.php

程序风格示例,来自手册:

<?php
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
if (!$link) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
            . mysqli_connect_error());
}
echo 'Success... ' . mysqli_get_host_info($link) . "'n";
mysqli_close($link);
?>

or die(mysqli_error($con))添加到mysqli_query()

错误报告添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code

旁注:错误报告只能在临时阶段进行,而不能在生产阶段进行。

如果要检查查询是否真的成功,请使用affected_rows()

  • http://php.net/manual/en/mysqli.affected-rows.php

但是,您当前的代码对SQL注入是开放的。使用准备好的语句,或将PDO与准备好的声明一起使用它们更安全


脚注:

  • 不确定$title变量的定义在哪里/如何定义,但看到这样的单词,告诉我它很可能是一个字符串,您可能需要详细说明