更新:
工作代码,感谢jon推动正确的方向。使用数组变量的Foreach循环中的SQL查询
<?php
$stmt2 = $conn->prepare("SELECT * FROM userItems WHERE id=:id");
foreach ($moodItems as $id2)
{
// bind the parameters
$stmt2->bindValue(":id", $id2);
if ($stmt2->execute()) {
if($result = $stmt2->fetch(PDO::FETCH_ASSOC)) {
// initialise an array for the results
$itemName2 = $result['itemName'];
$name2 = $result['userId'];
echo $itemName2."<br>";
echo $name2."<br>";
}
}
}
?>
我无法在foreach循环中使用SQL查询。我试图使用第一个查询(这是一个数组)的值,并在第二个查询中使用它。
第一个查询正确地为我提供正确的值(数组)。但由于某种原因,当我尝试在foreach中使用该数组时,它不能正常工作,它不显示任何错误......它只是不从数据库中获取任何数据。
IE/echo $ itemName2; < ----没有从数据库中得到任何信息
任何帮助都会很棒。谢谢。
这里是我一起工作的代码:
<?php
$attrs = array(PDO::ATTR_PERSISTENT => true);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// prepare the statement.
$stmt = $conn->prepare("SELECT * FROM userMoodboard WHERE name=:name");
// bind the parameters
$stmt->bindValue(":name", $loggedInUser->username);
// initialise an array for the results
if ($stmt->execute()) {
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$imageUrl = $row['imageUrl'];
$moodItems = $row['moodItems'];
$moodItems = json_decode($moodItems);
?>
<img src='<?php echo $imageUrl;?>' class="thumbnail"></img>
<?php
$stmt = $conn->prepare("SELECT * FROM userItems WHERE id=:id");
foreach ($moodItems as $id)
{
// bind the parameters
$stmt->bindValue(":id", $id);
// initialise an array for the results
if($stmt->execute()) {
$itemName2 = $row['itemName'];
$name2 = $row['userId'];
echo $itemName2;
echo $name2;
}
}
}
}
?>
感谢您的详细解答...我已经试过这段代码,但仍然没有运气,任何想法,我的语法出错了? 'code' $ stmt2 = $ conn-> prepare(“SELECT * FROM userItems WHERE id =:id”); foreach($ moodItems as $ id) { //绑定参数 $ stmt2-> bindValue(“:id”,$ id); //初始化一个数组对结果 \t如果($导致= $ stmt2->取(PDO :: FETCH_ASSOC)){ \t $ itemName2 = $导致[ 'ITEMNAME']; \t $ name2 = $ result ['userId']; \t \t \t echo $ itemName2; echo $ name2; } } – JustAnotherDude
从我所看到的看来,在使用'$ stmt2-> fetch'之前,您需要'$ stmt2-> execute',否则在绑定参数后您的查询还没有运行。 – Jon