繁体   English   中英

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

[英]multiple mysql query result in single array

我如何才能在单个数组中添加多个查询的结果,从而使以后的输出更加容易。

例如,

$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。.您有sqlinjection ..的风险,为避免这种情况,您应该查看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>";
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM