为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我会收到此错误,警告:mysqli_stmt::bind_param():

为什么我会收到此错误,警告:mysqli_stmt::bind_param():

PHP
LEATH 2022-10-14 14:49:08
我创建了一个查询类来处理我所有的基本 sql 函数,在类中我有一个基本函数,它使用准备好的语句插入数据,即“插入”函数,我不太清楚为什么,但我一直收到同样的错误(列出以上)每次我调用该函数时class Query{    private $conn;    private $table;    public function __construct($conn, $table)    {        $this->conn = $conn;        $this->table = $table;    }     public function Insert($fields, $placeholders, $binders, $values)     {        $field_val= implode(', ', $fields);        $ph=implode(', ', $placeholders);        array_walk($values, function(&$x) {$x = "'$x'";});        $val = implode(',  ', $values);        $query = 'INSERT INTO '.$this->table.' ('.$field_val.') VALUES('.$ph.')';        $stmt = $this->conn->prepare($query);        $stmt->bind_param(''.$binders.'', $val);        $stmt->execute();      }}这是用于将数据插入注释表的函数的示例,连接来自模块中包含的单独数据库文件    $database = new Database();    $conn = $database->connect();    //values    $comment_date = mysqli_real_escape_string($conn, htmlspecialchars($_POST['date-comment']));    $commenter = mysqli_real_escape_string($conn, htmlspecialchars($_POST['comment_name_of']));    $comment = mysqli_real_escape_string($conn, htmlspecialchars($_POST['comment']));    $comments_save = new Query($conn, 'nw_comments');    $fields = array('commenter_name', 'comment_value', 'date_commented');    $placeholders = array('?', '?', '?');    $binders = "sss";    $values = array($commenter, $comment, $comment_date);    $comments_save->Insert($fields,$placeholders,$binders,$values);
查看完整描述

1 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

看起来代码正在将字符串标量传递给bind_param. 我想我们要传递数组的元素。

我们可以这样做:

$stmt->bind_param(''.$binders.'', $values);

正如 Bill Karwin 正确指出的那样,传递整个数组(如上一行)是行不通的,它与传递单个引用的原始数组存在相同的问题。语法应该导致该...数组被解包,每个单独的元素通过引用传递,元素数量可变。)

像这样的东西:

$stmt->bind_param(''.$binders.'', ...$values);

对于通过绑定参数传递值,我们不需要将值括在单引号中。不需要这些行:

 array_walk($values, function(&$x) {$x = "'$x'";});
  $val = implode(',  ', $values);


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 158 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信