1

我试图用 PHP 和 MYSQL 建立一个简单的朋友系统,我不知道是否有可能只用他们的 id 从另一个表中获取使用数据。顺便说一句,我很新,所以我不太了解这种语言:) 任何帮助都会非常有价值

<?php if(count($friend_request) > 0): ?>
    <?php foreach ($friend_request as $friend_request): ?>
        <?php
            try{
                $statement = $db->query("SELECT * FROM users WHERE id = '$friend_request['id']' ");
                $user_info = $statement->fetchAll(PDO::FETCH_ASSOC);

            }catch (PDOException $ex){
                $user_info = flashMessage("An error occurred: " .$ex->getMessage());
            }   

        ?>
        <?=$friend_request['id'] ?>
        <?=$friend_request['user_requested'] ?>
        <?=$friend_request['user_to'] ?>
        <?=$friend_request['request_date'] ?>
    <?php endforeach; ?>
<?php else: ?>
    <center>
        <input id="emailInput" type="text" name="requestEmail" placeholder="someonesemail@bruh.com">
    </center>
<?php endif; ?>
4

2 回答 2

0

如果要将带引号的字符串放在字符串内变量的索引中,则需要使用 curly 语法。

$statement = $db->query("SELECT * FROM users WHERE id = '{$friend_request['id']}' ");

您也可以将引号排除在索引之外,但这不是我的偏好。

但最好使用准备好的语句。

<?php
if(count($friend_request) > 0):
    $statement = $db->prepare("SELECT * FROM users WHERE id = :id ");
    foreach ($friend_request as $friend_request):
        try{
            $statement->execute([':id' => $friend_request['id']]);
            $user_info = $statement->fetchAll(PDO::FETCH_ASSOC);
        }catch (PDOException $ex){
            $user_info = flashMessage("An error occurred: " .$ex->getMessage());
        }   
        ?>
        <?=$friend_request['id'] ?>
        <?=$friend_request['user_requested'] ?>
        <?=$friend_request['user_to'] ?>
        <?=$friend_request['request_date'] ?>
    <?php endforeach; ?>
<?php else: ?>
    <center>
        <input id="emailInput" type="text" name="requestEmail" placeholder="someonesemail@bruh.com">
    </center>
<?php endif; ?>
于 2019-03-04T20:16:20.387 回答
0

我假设你的 id 是数字,将值传递给一个新的 var,$id = friend_request['id'];然后你的查询可以 "SELECT * FROM users WHERE id = $id LIMIT 1" 没有“'”,“limit 1”是为了性能,你需要使用的获取只是在这里获取更多信息来检索后面的行 $statement->fetch(PDO::FETCH_ASSOC); 您可以直接打印或使用数组 $user_info 来满足您的任何需要。

于 2019-03-04T20:26:02.433 回答