如何在单个数组中添加多个查询的结果,以便以后输出更容易。
例如,
$newArray = array("mike", "john");
while ($newArray !== false){
$sql = "Select * from accounts where name = '$newArray'";
$result = mysqli_query($db_connection,$sql);
}
while ($row = mysqli_fetch_assoc($result)) {
printf $row['firstName'];
echo "----";
printf $row['num_accounts'];
echo "----";
prinf $row['location'];
echo "----";
echo "<br>";
}
我相信我错过了一些明显的东西。但我的想法是,我想设置一个循环来从数组中读取,然后执行查询并存储结果。每次查询执行时条件都不同但是来自同一个表,但是后来继续将结果添加到单个输出中,使得最终输出更容易。
你可以避免简单的使用in子句基于你需要的值列表
$newList = "'mike', 'john'";
$sql = "Select * from accounts where name IN (" .$newList .")";
但你不应该在sql中使用php var ..你有暴力的风险..为了避免这种情况你应该看看你的sqldruver绑定参数..
但是如果你想在同一个表上追加不同where条件的结果,你应该看一下UNION子句
$sql = "Select * from accounts where name IN (" .$newList .")
UNION
Select * from accounts where you_col > 10";
您的代码有一些问题..
1.您正在输入查询中的完整数组。
2.你没有对你的查询做任何准备,因此如果$newArray
是人类输入数据,它很容易被sql注入。
3.通过循环数据的逻辑,如果你设法得到一个正确的查询,将始终循环通过最后一个查询。你需要在实际循环中移动$row = mysqli_fetch_assoc($result)
东西。
要使此代码正常工作,它将如下所示:
$newArray = array("mike", "john");
foreach($newArray as $name){
$sql = "Select * from accounts where name = '{$name}'";
$result = mysqli_query($db_connection,$sql);
while ($row = mysqli_fetch_assoc($result)) {
printf $row['firstName'];
echo "----";
printf $row['num_accounts'];
echo "----";
prinf $row['location'];
echo "----";
echo "<br>";
}
}