gpt4 book ai didi

PHP 通知 : Array to string conversion in

转载 作者:行者123 更新时间:2023-11-29 13:04:59 26 4
gpt4 key购买 nike

我似乎无法弄清楚这一点。我写了一个 PHP 脚本,在尝试执行 postgres 查询时,我不断收到 Array to string conversion in... Notice 作为错误:

$tables = array(array('a','table1'),array('c','table2'));
$table = $tables[0][1];
$query = "SELECT * FROM " . $table . " WHERE id = :id LIMIT 1";
$select = $dbconn->prepare($query);
$id = $_GET['id'];
if($select->execute()){
}else{
echo $select->errorInfo();
}

我正在使用 PostgreSQL 9.2.1 版和最新的 PHP

最佳答案

PDOStatement::errorInfo() returns an array ,但您直接回应它,这将始终导致字符串 Array。您必须存储其返回的数组,并访问您希望读取的组件:

$err = $select->errorInfo();
print_r($err);

// Example as lifted from PHP docs linked above:
PDO::errorInfo():
Array
(
[0] => HY000
[1] => 1
[2] => near "bogus": syntax error
)

顺便说一句,用于数组到字符串转换的 E_NOTICE 是 PHP 5.4 中的新功能。 PHP 5.3 中的相同代码会将 Array 作为字符串输出,但不会发出 E_NOTICE

由于您使用的是 PHP 5.4,因此您可以根据需要直接取消引用消息 [2]:

// 5.4+ only...
echo $select->errorInfo()[2];

现在为什么会出现错误:

至于为什么一开始就进入else block 报错,你有一个:id的占位符,但是你从来没有绑定(bind)变量$id 在执行查询之前。

你可以使用

$select->execute(array(':id', $id))

或者

$select->bindParam(':id', $id, PDO::PARAM_INT); // assuming an integer $id. Use PDO::PARAM_STR for strings

关于PHP 通知 : Array to string conversion in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16199838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com