检查数据库数组中是否存在值不起作用

时间:2015-01-11 12:37:01

标签: php mysql arrays if-statement

需要检查数组中是否存在值,从数据库表创建的数组,它只是不与我一起工作继续得到错误说“in_array()期望参数2是数组,给出字符串” 有人可以帮忙吗?

PHP代码

<?php 
    $lang='en';
    $query_rsLanguages = "SELECT * FROM languages";
    $rsLanguages = mysql_query($query_rsLanguages);
    $languages_array = array();
    while($row = mysql_fetch_array($rsLanguages)){ 
      $languages_array[] = "\"".$row['language_sign']."\""; 
    }
    $languages_string = implode(",", $languages_array);
    if (in_array($lang, $languages_string)) {
        echo 'found' ;
        }
?>

3 个答案:

答案 0 :(得分:1)

您将$languages_array发送到字符串并将其传递给in_array,这是不正确且不必要的。由于错误说您需要传递数组来搜索。您只需要从结果中构建语言数组并检查:

<?php 
    $lang='en';
    $query_rsLanguages = "SELECT * FROM languages";
    $rsLanguages = mysql_query($query_rsLanguages);
    $languages_array = array();
    while($row = mysql_fetch_array($rsLanguages)){ 
      $languages_array[] = $row['language_sign'];
    }

    if (in_array($lang, $languages_array)) {
        echo 'found' ;
    }
?>

答案 1 :(得分:1)

这将检查$lang内是否存在字符串$languages_array

if (in_array($lang, $languages_array)) {
        echo 'found' ;
}

答案 2 :(得分:1)

上面的错误是说in_array的第二个参数应该是一个数组,通过使用implode你将它变成一个字符串使用下面的代码。

<?php 
    $lang='en';
    $query_rsLanguages = "SELECT * FROM languages";
    $rsLanguages = mysql_query($query_rsLanguages);
    $languages_array = array();
    while($row = mysql_fetch_array($rsLanguages)){ 
      $languages_array[] = $row['language_sign'];
    }

    if (in_array($lang, $languages_array)) {
        echo 'found' ;
    }
?>

希望这有助于你