使用这些代码时将错误数组通知给字符串对话
第一个代码(有效,但有通知):
$id=array("PENS", "RINGS");
try{
//Database Connection code
$stmt=$conn->prepare('SELECT Name FROM category WHERE Name IN (:id)' ;
$stmt->execute(array(
'id'=> $id
)) ;
print_r($id);
}
catch {}
第二个代码(不显示任何内容):
$id = implode(",", $id); // return comma separated string from values of array
$stmt=$conn->prepare('SELECT Name FROM category WHERE Name IN (:id)') ;
$stmt->bindParam(':id', $id);
$stmt->execute();
while($row = $stm->fetch(PDO::FETCH_ASSOC)) ;
print_r($row);
}
为了在任何这些代码中成功使用数组,我现在应该做些什么?
答案 0 :(得分:1)
在您使用echo
的第一个代码中,这是有问题的,因为echo
只输出字符串,因此无法将数组转换为字符串。
在您的第二个代码中,您使用print_r
来打印数组,但是您使用fetch
只检索结果集中的下一行,请尝试使用PDO::FETCHASSOC
代替在结果数组中返回结果,然后由print_r
显示。
第二段代码:
$id = implode(",", $id); // return comma separated string from values of array
$stmt=$conn->prepare('SELECT Name FROM category WHERE Name IN (:id)') ;
$stmt->bindParam(':id', $id);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($row);
}
答案 1 :(得分:0)
错误数组到字符串转换意味着您尝试将数组用作字符串。
$id
被定义为数组。
你将它作为字符串传递给这一行
'id'=> $id
类似地,在PDO的情况下,期望给出字符串和数组
$stmt->bindParam(':id', $id, PDO::PARAM_STR);