-2

私はこれが初めてです.php.netで関数をチェックしても、 mysql_fetch_row()警告mysql_fetch_result()が表示され続けます

パラメーター 1 はリソースであると予想され、ブール値が与えられます

  <?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
 ?>
4

1 に答える 1

1

$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_*さらに、非推奨のため、関数を使用しないでください。PDOまたはmysqli_*代わりに使用

于 2013-06-10T09:32:46.457 に答える