PHP注意错误数组到字符串对话

时间:2015-10-15 18:24:52

标签: php

使用这些代码时将错误数组通知给字符串对话

第一个代码(有效,但有通知):

   $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);
}

为了在任何这些代码中成功使用数组,我现在应该做些什么?

2 个答案:

答案 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);