Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP注意事项:中的数组到字符串转换_Php_Postgresql_Type Conversion - Fatal编程技术网

PHP注意事项:中的数组到字符串转换

PHP注意事项:中的数组到字符串转换,php,postgresql,type-conversion,Php,Postgresql,Type Conversion,我似乎无法理解这一点。我写了一个PHP脚本,我不断得到一个数组到字符串的转换。。。请注意,尝试执行postgres查询时出现错误: $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);

我似乎无法理解这一点。我写了一个PHP脚本,我不断得到一个数组到字符串的转换。。。请注意,尝试执行postgres查询时出现错误:

$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,但是您直接回显它,这将始终导致字符串
数组
。必须存储其返回的数组,并访问要读取的组件:

$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_注意事项在PHP5.4中是新的。PHP5.3中的相同代码将
数组
作为字符串输出,但不会发出
E_通知

由于您使用的是PHP5.4,如果您愿意,可以直接取消对消息的引用

// 5.4+ only...
echo $select->errorInfo()[2];
现在,为什么会出现错误: 至于为什么要首先输入
else
块来报告错误,您有一个
:id
的占位符,但在执行查询之前,您从未绑定变量
$id

你可以用

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


谢谢你,这很有帮助!
$select->bindParam(':id', $id, PDO::PARAM_INT); // assuming an integer $id. Use PDO::PARAM_STR for strings