0

この言語でプログラミングせずに数年経った私は、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]: 2 番目の引数のデータ型が正しくありません

$myArray が空のときに in_array が実行されないようにするために、次のようにしました。

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

しかし、配列が空の場合、count は 1 を返します (?)...

どうすれば解決できますか?

別の質問: $myString は、既にテストしている IF 内で変更されています。これはPHPで可能ですか?

4

1 に答える 1

2

クエリが失敗した場合は、... 待ってください... 配列がありません!

そのため、その呼び出しは配列ではないin_arrayという警告を表示します(しかし)。$myArrayfalse

クエリにエラーがないかチェックする必要があります。

mysql_*新しいコードで関数を使用しないでください。それらはもはや維持されておらず、非推奨プロセスが開始されています。赤いボックスがか? 代わりにプリペアド ステートメントについて学び、 PDOまたはMySQLiを使用してください。この記事は、どちらを決定するのに役立ちます。PDO を選択する場合は、ここに良いチュートリアルがあります。

于 2012-11-18T21:59:28.033 に答える