-3

データベース接続はすべて正しいのですが、次のエラーが表示されます

Warning: 
mysql_fetch_array(): supplied argument is not a valid MySQL result on line 31

<?php 
  $hostname = "localhost";  
  $username = "user";  
  $password = "pass";   
  $usertable = "products";  
  $dbName = "test_prods";  


 $s = $_GET["s"];  
 $name = $row["product_name"];  

     MYSQL_CONNECT($hostname, $username, $password) OR DIE("Unable to connect to database");   
     @mysql_select_db( "$dbName") or die( "Unable to select database");   

 //error message (not found message)   
   $XX = "No Products Found";   


 $query = mysql_query("SELECT * FROM $usertable WHERE $s LIKE '$name'");   
  while ($row = mysql_fetch_array($query))   
    {  
      $variable1=$row["row_name1"];  
      $variable2=$row["row_name2"];  
      $variable3=$row["row_name3"];  
print ("this is for $variable1, and this print the $variable2 end so on...");  
}  

 //below this is the function for no record!!   
if (!$variable1)  
   {  
       print ("$XX");  
   }  
//end  
?>
4

3 に答える 3

2

変化する:

$s = $_GET["s"];  
$name = $row["product_name"];  

に:

$s = mysql_real_escape_string($_GET["s"]);
$name = mysql_real_escape_string($row["product_name"]);

次の警告に注意してください: *この拡張モジュールは PHP 5.5.0 で非推奨になり、将来削除される予定です。代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。*

情報: http://php.net/manual/en/function.mysql-real-escape-string.php


およびクエリを次のように変更します。

$query = mysql_query("SELECT * FROM $usertable WHERE $s LIKE '$name'") 
      or die(mysql_error());

SQL に問題を絞り込むエラーがあるかどうかを教えてくれます! どのような結果が得られたか教えていただければ、問題により適した回答を更新できます。

于 2013-01-02T00:38:22.013 に答える
1

未定義の変数を使用しているようです:

$name = $row["product_name"];

別のクエリから名前を取得しようとしていると思います。それを使用して、一致するものがあればそれを取得します。

電話mysql_queryをかける前に名前を設定すると、おそらくあなたのために仕事をするでしょう.

また、一見、あなたは mysql を使い始めたばかりなので、mysql_ 関数の使い方を学ぶのをあきらめて、PDO を使ってクエリを実行する方法を学び始めることをお勧めします。

このチュートリアルは非常に役に立ちました。

于 2013-01-02T00:36:30.907 に答える
1

SQL構文にエラーがある可能性があります。

ここのこの行で

$name = $row["product_name"];  

$row["product_name"] は何かに評価されますか?

あなたが投稿したものからはそうではありませんが、他の場所に値がロードされている可能性があります。

それが何にも評価されない場合、SQL ステートメントは構文にエラーがあり、$query は mysql リソースになることができません。

于 2013-01-02T00:37:22.073 に答える