【问题标题】:How to fix this error : " array to string conversion "?如何修复此错误:“数组到字符串转换”?
【发布时间】:2020-12-17 14:33:13
【问题描述】:

我正在用 PHP 编写我的网络应用程序,当我运行我的脚本时,我遇到了这个错误: 数组到字符串的转换

这是引发错误的脚本。

public function insert($table, array $columns, array $values) {
            $sql = "INSERT INTO " . $table .
                    " (" . implode(',' , $columns) . " ) 
                    VALUES (" . implode(',',
                    $values) . ")";
            $this->request($sql);
    }

这里是请求函数:

public function request($sql, $param = null) {
        if ($param == null) {
            $query = Database::getInstance()->getDb()->query($sql);
        }

        else {
           $query = Database::getInstance()->getDb()->prepare($sql);
           $query->execute(array($param));
        }

        return $query;
    }

注意:我正在使用自己的 MVC 框架。

那么,任何建议或帮助都将不胜感激?

问候

YT

【问题讨论】:

  • 帮自己一个忙,开始使用准备好的语句。它们可用于大多数 RDBMS,并受 mysqliPDO API 的支持。
  • 另外,哪一行代码给了你这个错误?您的查询看起来应该产生一个有效的字符串。 sandbox.onlinephpfunctions.com/code/…
  • 抱歉,如果您通过$params,刚刚看到您的请求方法正在使用准备好的语句。在这种情况下,你为什么不通过参数?我会更改您的 insert 语句,使其生成INSERT INTO ... (...) VALUES (?, ?, ?, ...),然后将值作为$params 传递。
  • 在这里查看我的代码phpize.online/… 它可以阻止你吗?

标签: php arrays string error-handling


【解决方案1】:

我建议修改您的类方法以使用参数化查询:

class Test {
    public function insert($table, array $columns, array $values) {
        $sql = "INSERT INTO " . $table . " (" . implode(',' , $columns) . ") 
                VALUES (?" . str_repeat(",?", count($columns) - 1) . ");";

        echo $sql;
        $this->request($sql, $values);
    }
    
    public function request($sql, $param = null) {
        if ($param == null) {
            $query = Database::getInstance()->getDb()->query($sql);
        }

        else {
           $query = Database::getInstance()->getDb()->prepare($sql);
           $query->execute($param);
        }

        return $query;
    }   
};

$test = new Test();

$test->insert('tbl', ['id', 'name'], [1, 'first row']);

Online PHP test

【讨论】:

    猜你喜欢
    • 2023-04-07
    • 2021-10-12
    • 2021-07-15
    • 2020-09-12
    • 1970-01-01
    • 2015-02-26
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多