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

check if value exist in database array not working

需要检查数组中是否存在该值,该数组是从数据库 table 创建的,它只是不适合我,不断收到错误提示 "in_array() expects parameter 2 to be array, string given" 有人可以帮忙吗?

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' ;
        }
?>

您正在将 $languages_array 内爆到一个字符串并将其传递给 in_array,这是不正确且不必要的。正如错误所说,您需要传递 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' ;
    }
?>

这将检查字符串 $lang 是否存在于您的 $languages_array

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

上面的错误是说 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' ;
    }
?>

希望对您有所帮助