0

次のif/elseステートメントを使用してクエリを作成しようとしましたが、最初のステップでNULLの評価に問題があります。

オンラインで検索した後、間違っていることを追跡できないようです...代わりに空の引用符を使用する必要があります:""
しかし、それも私にエラーを与えました。

whileしたがって、問題が最初のブロックにあるのか、ループである2番目のブロックにあるのかわかりません。

助言がありますか?

$name = $_POST['Your_name'];

if ($location != "All" && $name == NULL)  $query="SELECT * FROM talent WHERE duty_station='$location')";
else if($location == "All" && $name != "All" ) $query="SELECT * FROM talent WHERE Your_name IN ('$name')";
else if($dutyReq != "All" && $name == "All" ) $query="SELECT * FROM talent WHERE  duty_station='$location'";
else if($location == "All" || $name == "All" ) $query="SELECT * FROM talent";

次に、データを出力するループで次のエラーが発生します。

警告:mysql_fetch_array():指定された引数は64行目の/var/www/html/talent/searchresults.phpにある有効なMySQL結果リソースではありません

これは、エラーの原因となるコードです。

   $result=mysql_query($query); 
   mysql_query($result);

    echo "<table border='1'>
    <tr>
    <th>Your name</th>
    <th>duty station</th>
    <th>first proficiency</th>
    </tr>";
   while($row = mysql_fetch_array($result)){
        echo "<tr>";
        echo "<td>" . $row['Your_name'] . "</td>";
        echo "<td>" . $row['duty_station'] . "</td>";
        echo "<td>" . $row['prof_order_processing'] . "</td>";
        echo "</tr>";
        }
echo "</table>";
4

3 に答える 3

1

問題はこの行にあると思います:

mysql_query($result);

そこにあるべきではありません。mysql_query関数を呼び出して、SQLスクリプトではない変数を指定することはできません。この行を削除します。

于 2012-09-09T22:06:40.647 に答える
1

最初のSQLクエリにエラーがあります(余分な右括弧):

$query="SELECT * FROM talent WHERE duty_station='$location')";

そのはず:

$query="SELECT * FROM talent WHERE duty_station='$location'";

次のコード行を使用します。

$result=mysql_query($query); 
mysql_query($result);

何を達成しようとしていますか?MySQLリソースをクエリ文字列として使用しようとしています。
2行目を削除します。


が設定されていない場合$_POST['name']は、

注意:未定義のインデックス:X行の<filename>の名前

これを修正するには、次のコードを使用します。

$name = empty($_POST['name']) ? null : $_POST['name'];

また、SQLインジェクションからコードを保護することを忘れないでください。

mysql_*関数の使用はお勧めしません。代わりにPDOを使用する必要があります。コードをより安全にするために
使用できます。PDO::prepare

于 2012-09-09T22:18:02.253 に答える
0

PHPでは次のように書く必要があります

$name = $_POST['Your_name'];
if(isset($name) && !empty($name))
{
  //some code
}

また、is_array(プレーンな文字列を期待している場合)などのチェックを追加することもできます...

于 2012-09-09T21:59:16.917 に答える