【发布时间】:2014-03-06 02:40:39
【问题描述】:
我正在尝试将值绑定到 SQL 语句中。它似乎没有约束力,或者正在工作并且由于我不知道的原因没有返回所需的数据。这是我的代码:
$search_string = 'turkey';
// Gathers the bird ID through searched name
$birdID = $conn->prepare("SELECT `id` FROM `birds` WHERE `bird_name` LIKE :birdName ;");
$birdID->execute(array(':birdName' => '%'.$search_string.'%'));
$returnBirdID = $birdID->fetchAll(PDO::FETCH_BOTH);
foreach($returnBirdID as $birdID){
$birdsID[] = $birdID;
}
这里需要注意的重要一点是 var_dump($birdsID) 按预期返回一个数组。
我有另一个类似于上面的代码块,它根据状态缩写检索数据,例如“纽约”。为简洁起见将其省略(几乎与上述相同)。
// Build query for binding.
$sql = "
SELECT t.state_id,t.bird_id
FROM table1
WHERE bird.id = :birdID
AND states.id = :statesID ;
";
$query = $conn->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$query->execute(array(':birdID'=>$birdsID,':statesID'=>$statesID));// Think this line may be the problem...
$results = $query->fetchAll(PDO::FETCH_BOTH);
foreach($results as $getID){
$getIDs[] = $getID;
}
var_dump($getIDs) 在这里返回 NULL。我认为它可能与 :birdID'=>$birdsID 不接受 $birdsID 作为值有关,因为它本身就是一个数组。但是将其编码为 $birdsID[0] 也不起作用。不知道怎么回事!
呼……已经为此工作了好几个小时。如果没有意义,对不起!脑油炸了。
【问题讨论】:
-
请注意标签不是关键字。在标签列表中塞满与您的问题中相同的单词将无助于对其进行分类。相反,请使用与您的代码示例相关的语言、库和方法名称。请务必阅读选择标签时出现的说明!
-
它会将您的
$birdsID参数值转换为Array()或类似的值。我怀疑这将匹配任何记录。假设$birdsID在索引0处至少包含一个条目,那么$birdsID[0]应该在execute数组中工作 -
$search_string = '%turkey%';....$birdID->execute(array(':birdName' => $search_string));