Php 尝试使用foreach循环使用MYSQL选择一行数据

Php 尝试使用foreach循环使用MYSQL选择一行数据,php,mysql,Php,Mysql,我正在尝试用PHP和MYSQL做一个简单的朋友系统,我不知道是否有可能从另一个表中获得使用数据,只使用它们的id。顺便说一句,我是一个非常新的人,所以我不太懂这门语言:)任何帮助都是非常有价值的 <?php if(count($friend_request) > 0): ?> <?php foreach ($friend_request as $friend_request): ?> <?php try{

我正在尝试用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; ?>


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

$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; ?>

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

$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; ?>

我假设您的id是数字,将该值传递给一个新的变量,如
$id=friend\u request['id']然后您的查询可以
“从id=$id LIMIT 1的用户中选择*”
如果没有“'”,则“limit 1”用于性能,并且需要使用just fetch来检索行
$statement->fetch(PDO::fetch_ASSOC)

以后,您可以直接打印或使用数组$user\u info以获取所需信息。

我假设您的id是数字,将该值传递给一个新的变量,如
$id=friend\u request['id']然后您的查询可以
“从id=$id LIMIT 1的用户中选择*”
如果没有“'”,则“limit 1”用于性能,并且需要使用just fetch来检索行
$statement->fetch(PDO::fetch_ASSOC)

以后,您可以直接打印或使用数组$user\u info以获取所需的信息。

您没有在任何地方使用
$user\u info
。此外,代码可能会出现第一次SQL注入(直接)或第二次SQL注入(存储)的情况。如果
$friend\u request
是另一个查询的结果,你应该把这两个查询连接起来,而不是在循环中查询。是的,我知道,但我正在尝试获取$friend_请求['id']进入mysql查询如果PHP的行与行之间没有HTML代码,则不需要在每一行上使用
,除非您喜欢不可读的代码,否则您不会在任何地方使用
$user\u info
。此外,代码似乎倾向于第一次SQL注入(直接)或第二次SQL注入(存储)一个。如果另一个查询的结果是
$friend\u request
,您应该将两个查询合并,而不是在循环中查询。是的,我知道,但我正在尝试获取$friend\u请求['id']进入mysql查询如果PHP的行与行之间没有HTML代码,则不需要在每行上使用
,除非您喜欢不可读的代码或
$db->query(“从用户中选择*,其中id='$friend\u request[id]”)是的,我试图忽略这种情况,我认为这是一个奇怪的异常。或者<代码> $db>查询(“从ID为‘$FuffiReQuest[ID]’的用户中选择*);<代码>是的,我试图忽略那个情况,我认为这是一个奇怪的异常。我希望这将有助于我想说的内容?这是一个简单的连接,如
从用户中选择a.username作为左连接朋友\u请求作为b上的b.user\u id=a.id,其中a.id=$id
在选择部分,您可以使用a或b别名和字段名获得所需的任何列:)这是我刚刚制作的digram,我希望这将有助于我想说的内容?这是一个简单的连接,如
选择用户的a.username作为左连接朋友\u请求b上的b.user\u id=a.id,其中a.id=$id
,在选择部分,您可以使用a或b别名和字段名获得所需的任何列:)