gpt4 book ai didi

php - foreach 循环和 SQL (PDO) 的问题

转载 作者:行者123 更新时间:2023-11-29 08:02:16 25 4
gpt4 key购买 nike

我是新来的,这是我的第一个问题:)

我有这个代码:

<?php                   
/*
* Load messages from right users
*/
try {
$selectContactQuery = 'SELECT profile_id, user_id
FROM profilecontact
WHERE profile_id=:profile_id AND owner_id=:owner_id;';

$prepSelectContacts = $conn->prepare($selectContactQuery);
$prepSelectContacts->bindParam(':profile_id', $urlPid, PDO::PARAM_INT);
$prepSelectContacts->bindParam(':owner_id', $uid, PDO::PARAM_INT);
$prepSelectContacts->execute();
$contactsResult = $prepSelectContacts->fetchAll();
$contactsCount = count($contactsResult);
}
catch(PDOException $e) {
$conn = null;
header('Location: ../errors/error_101.html');
}

foreach($contactsResult AS $contactsRow) {
$scrapProfileId = $contactsRow['profile_id'];
$scrapUserId = $contactsRow['user_id'];

$selectScrapQuery = 'SELECT scraps.user_id, scraps.scrap_text, scraps.profile_id, scraps.add_date, user.user_id, user.profile_picture_50
FROM scraps
JOIN user ON(scraps.user_id = user.user_id)
WHERE scraps.user_id = scraps.user_id AND scraps.profile_id = scraps.profile_id ORDER BY add_date';
$prepSelectScrap = $conn->prepare($selectScrapQuery);
$prepSelectScrap->bindParam(':scraps.user_id', $scrapUserId, PDO::PARAM_INT);
$prepSelectScrap->bindParam(':profile_id', $scrapProfileId, PDO::PARAM_INT);
$prepSelectScrap->execute();
$scrapResult = $prepSelectScrap->fetchAll();
$scrapResultCount = count($scrapResult);

if($scrapResultCount > 0) {
foreach($scrapResult AS $scrapResultRow) {
echo '<div class="parentArrow"></div>
<div class="scrapItemParent">
<img class="scrapProfilePic" src=" ' . $scrapResultRow['profile_picture_50']. '" />
<div class="scrapContent">' . $scrapResultRow['scrap_text'] . '<br />
<span class="scrapTime">' . $scrapResultRow['add_date'] . '<br />' . $scrapResultRow['user_id'] . ' ' . $scrapResultRow['profile_id'] . '</span></div></div>';
}
}
}
?>

我想要做的是使用第一个 SQL 查询,我尝试选择一个用户的联系人以及与他/她关联的特定配置文件。这给了我一个看起来像这样的结果集:

+-----------+---------+
|profile_id | user_id |
+-----------+---------+
| 32 | 45 |
| 32 | 56 |
| 32 | 78 |
+-----------+---------+

我通过 foreach 获得这些结果,您可以在我的代码中看到,从“foreach ($contactsResult AS $contactsRow)...”行开始,在这个 foreach 循环中,我执行 SQL 查询来加载消息来自与正确配置文件关联的用户(第一个 SQL 查询是加载用户及其关联的配置文件)。但是,我对此有多个问题。首先,在第二个 SQL 查询中,有一个 WHERE 子句:

"WHERE scraps.user_id = scraps.user_id AND scraps.profile_id = scraps.profile_id"

但是,第二个 WHERE 条件 scraps.profile_id... 被忽略。这些消息也会显示多次(我测试时显示两次)。

有谁知道这段代码有什么问题吗?它不会给我任何错误,它只是不会做我想做的事。我知道大多数问题都是由于循环造成的,但我看不到另一种方法来实现我所需要的。

最佳答案

试试这个

 $selectScrapQuery = 'SELECT scraps.user_id, scraps.scrap_text, scraps.profile_id, scraps.add_date, user.user_id, user.profile_picture_50
FROM scraps
JOIN user ON(scraps.user_id = user.user_id)
WHERE scraps.user_id =:scraps_user_id AND scraps.profile_id =:scraps_profile_id ORDER BY scraps.add_date';
$prepSelectScrap = $conn->prepare($selectScrapQuery);
$prepSelectScrap->bindParam(':scraps_user_id', $scrapUserId, PDO::PARAM_INT);
$prepSelectScrap->bindParam(':scraps_profile_id', $scrapProfileId, PDO::PARAM_INT);

关于php - foreach 循环和 SQL (PDO) 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com