Php 尝试使用foreach循环使用MYSQL选择一行数据
我正在尝试用PHP和MYSQL做一个简单的朋友系统,我不知道是否有可能从另一个表中获得使用数据,只使用它们的id。顺便说一句,我是一个非常新的人,所以我不太懂这门语言:)任何帮助都是非常有价值的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 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别名和字段名获得所需的任何列:)