-1

我一直有一个错误,mysql_fetch_(assoc,array,row)我找不到问题,当我尝试使用 echo 计算结果的行数时,结果为 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_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

警告:您的代码容易受到SQL 注入的影响。

于 2013-05-01T16:56:45.687 回答
0

该函数mysql_fetch_assoc()需要一个参数,它应该是一种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"); 

注意(直接来自 php.net 关于 mysql_*)

警告

此扩展自 PHP 5.5.0 起已弃用,并将在未来删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。另请参阅 MySQL:选择 API 指南相关的常见问题解答以获取更多信息。

于 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 回答