PHP数组填充信息表格数据库

时间:2017-02-10 14:20:46

标签: php mysql arrays

这就是我将数据库中的信息放入数组的方式:

$sql = "SELECT city, read FROM location";
$info = mysql_query($sql);
$read = array();
while ($row = mysql_fetch_assoc($info)){
    $read[] = $row;
}

这是$read的输出的一部分(表中有40个城市):

Array ([0] => Array ([city] => New York [read] => false) [1] => Array ([city] => Paris [read] => true ))

现在我想检查城市的读取值是否为真,然后回显一下。

我不知道如何做到这一点我需要一个for循环还是一个if语句?

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

function checkCityRead($city){
    foreach($read as $r){
        if($r['city']==$city){
            if($r['read']=='true'){
                //do something
            }
        }
    }
}

或者如果想将它作为所有城市的通用循环

foreach($read as $r){
    if($r['read']=='true'){
        //do something
    }
}

修改

评论中有很多建议,你不应该使用已弃用的库mysql,而且你应该查询它是否已被执行"致@Fred-ii"的信用,所以你的代码可能是这样的:

$con = mysqli_connect("localhost","my_user","my_password","my_db");

// Check connection
if (mysqli_connect_errno()){
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else{
    $sql = "SELECT city, `read` FROM location";
    $info = mysqli_query($sql, $con);
    if(!$info){
        echo mysqli_error($con);
    } else{
        $read = array();
        while($row = mysqli_fetch_assoc($info)){
              $read[] = $row;
        }
    }
}

答案 1 :(得分:4)

您需要foreach statement

foreach ($read as $value) {
    if ($value['read'] == true)
        echo 'something';
}

而且,正如Magnus Eriksson在评论中所述,你应该refrain from using mysql_* functions

编辑(由 Fred -ii - 抓住并建议):read是一个保留的mySQL关键字,因此如果你没有包含反引号,你的查询应该会失败,如下:

$sql = "SELECT city, `read` FROM location";

附注:您可能希望将$value['read']'true'进行比较,而不是truestring而非bool),因为我很漂亮确保mysql_fetch_assoc()始终返回string - 输入值:

foreach ($read as $value) {
    if ($value['read'] == 'true')
        echo 'something';
}