-1

問題が見つかりませんでエラーが発生し続け、mysql_fetch_(assoc,array,row)エコーを使用して結果の行を数えようとすると、結果は1になります

警告: mysql_fetch_assoc(): 指定された引数は、クエリ SELECT * FROM users WHERE uName ='nuha' AND uPassword = '123' の 88 行目の C:\wamp\www\Jocales\login.php の有効な MySQL 結果リソースではありません

 <?php 

   $login= $_POST['login']; 
   $password= $_POST['password'];

      if($login && $password){
       $con = mysql_connect("localhost", "root", "")or die ('no connection');
       mysql_select_db("jocales",$con) or die ('no');
       $query= "SELECT * FROM users WHERE uName ='$login' AND uPassword = '$password'";
       $result = mysql_query($query)or die(mysql_error()." in query $query");

       $record=mysql_fetch_assoc($query) or die(mysql_error()." in query $query"); 
  ?>
4

3 に答える 3

1

変化する

$record=mysql_fetch_assoc($query)

$record=mysql_fetch_assoc($result)   

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

警告:コードはSQL インジェクションに対して脆弱です。

于 2013-05-01T16:56:45.687 に答える
0

この関数mysql_fetch_assoc()は 1 つのパラメーターを想定しており、それはresource型である必要があります。文字列を提供しています。

$query= "SELECT * FROM users WHERE uName ='$login' AND uPassword = '$password'";
$result = mysql_query($query)or die(mysql_error()." in query $query");

//this is the issue!
$record = mysql_fetch_assoc($query) or die(mysql_error()." in query $query"); 

最後のステートメントは

$record = mysql_fetch_assoc($result) or die(mysql_error()." in query $query"); 

注(mysql_*についてphp.netから直接)

警告

この拡張機能は PHP 5.5.0 で非推奨になり、将来的に削除される予定です。代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。詳細については、MySQL: API ガイドの選択および関連する FAQも参照してください。

于 2013-05-01T16:57:19.100 に答える
0

$queryこのコードを使用します ( に置き換えます$result)

<?php 

   $login= $_POST['login']; 
   $password= $_POST['password'];

      if($login && $password){
       $con = mysql_connect("localhost", "root", "")or die ('no connection');
       mysql_select_db("jocales",$con) or die ('no');
       $query= "SELECT * FROM users WHERE uName ='$login' AND uPassword = '$password'";
       $result = mysql_query($query)or die(mysql_error()." in query $query");

       $record=mysql_fetch_assoc($result) or die(mysql_error()." in query $query"); 
  ?>
于 2013-05-01T16:58:05.890 に答える