单个数组中的多个mysql查询结果

时间:2018-03-05 14:38:47

标签: php html mysql

如何在单个数组中添加多个查询的结果,以便以后输出更容易。

例如,

$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>";
}

我确信我错过了一些显而易见的事情。但我的想法是,我想设置一个循环来从数组中读取,然后执行查询并存储结果。每次查询执行时条件都不同但是来自同一个表,但是后来继续将结果添加到单个输出中,最终使输出更容易。

2 个答案:

答案 0 :(得分:1)

你可以根据你需要的值列表来避免简单的使用in子句

$newList = "'mike', 'john'";

$sql = "Select * from accounts where name IN (" .$newList .")";

但你不应该在sql中使用php var ..你有sqlinjection的风险..为了避免这种情况,你应该看看你的sqldruver的绑定参数..

但是如果你想在同一个表上附加不同where条件的结果,你应该看一下UNION子句

$sql = "Select * from accounts where name IN (" .$newList .") 
        UNION 
        Select * from accounts  where you_col > 10";

答案 1 :(得分:0)

您的代码存在一些问题..
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>";
    }
}