警告:mysql_fetch_row()/mysql_fetch_result()期望参数1为resource, boo


Warning: mysql_fetch_row()/mysql_fetch_result() expects parameter 1 to be resource, boolean given

我是新手。即使我检查了php.net的功能mysql_fetch_row()mysql_fetch_result(),我不断得到警告

期望参数1为resource, Boolean给定

  <?php
 //code
 $sql1="SELECT * FROM $tblname WHERE USERNAME='$myusername' and    PASSWORD='$mypassword'";
 $result1=mysql_query($sql1);
 // Mysql_num_row is counting table row
 $count=mysql_num_rows($result1);
 // If result matched $myusername and $mypassword, table row must be 1 row
 if($count==1)
 {
 $sql2="SELECT CLIENT_ID FROM $tblname WHERE USERNAME='$myusername' and PASSWORD='$mypassword'";
 $result2=mysql_query($sql2); //THIS LINE!!!
 $cid=mysql_result($result2,$row2); //THIS LINE!!!
 // Register info
 $_SESSION['sessname'] = "$myusername";
 $_SESSION['sesspwd'] = "$mypassword";
 $_SESSION['sessid'] = "$cid";
 $_SESSION['sessaccid'] = "$accid";
//more code
 ?>

$result2正在返回一个布尔值(意味着在您的选择中发生了错误),因此,您将此布尔值传递给mysql_result()而不是资源。

这是返回值,取自文档

用于SELECT, SHOW, DESCRIBE, EXPLAIN等语句返回结果集,mysql_query()成功时返回一个资源,否则返回FALSE错误。

你应该这样修改你的代码

[...]
$sql2="SELECT CLIENT_ID FROM $tblname WHERE USERNAME='$myusername' and PASSWORD='$mypassword'";
$result2=mysql_query($sql2);
if($result2)
{
  $cid=mysql_result($result2,$row2); //THIS LINE!!!
}
else
{
//do some error handling
}
[...]

此外,您不应该使用mysql_*函数,因为它们已被弃用。使用PDOmysqli_*代替