警告:in_array()[function.in-array]:第二个参数的数据类型错误

时间:2012-11-18 21:56:11

标签: php mysql

几年后我没有使用这种语言进行编程,我在PHP中有点生疏。

我使用PHP从mySQL中的数组中获取数据。

我的问题是,在某些时候我使用以下方法从表中获取数据:

$myArray = mysql_fetch_array( $data ); 

但在某些时候,数据库可能为空,因此$ myArray将为null或不包含任何元素。

然后我必须检查动态生成的特定字符串是否在$ myArray上。如果是,则必须生成另一个字符串并验证它是否已存在于$ myArray。

$myString = generateString();
if (in_array($myString, $myArray)) {
    $myString = generateString();
}

这段代码给了我这个错误:

警告:in_array()[function.in-array]:第二个参数的数据类型错误

为了防止in_array在$ myArray为空时运行,我这样做了:

if (count($myArray) > 0) {
    if (in_array($myString, $myArray)) {
        $myString = generateString();
    }
}

但是当数组为空时,count给我1(?)...

我该如何解决?

另一个问题:$ myString正在已经在测试它的IF中进行修改。这可能在PHP吗?

1 个答案:

答案 0 :(得分:2)

好吧,如果您的查询失败,您将......等待它......没有阵列!

因此,in_array调用会向您发出关于$myArray不是数组(但false)的警告。

您需要检查查询是否存在错误,更好的是:

  

Please, don't use mysql_* functions in new code。它们不再被维护,deprecation process已经开始了。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial