-2

ログイン/登録システムを作成しようとしていますが、エラーが発生し続けます: 警告: mysql_query() は、パラメーター 2 がリソースであると想定しています。

警告: mysql_result() は、少なくとも 2 つのパラメーターを予期します。そのうちの 1 つは、8 行目の /home/roscapex/public_html/core/functions/users.php で指定されます。

私のコードは次のとおりです。

<?php
function user_exists($username) {

$username = sanitize($username);

$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'");

return (mysql_result(mysql_query($query, 0) == 1) ? true : false);

}
?>

これは重複している可能性がありますが、他の関連する質問をすべて試しました。

4

1 に答える 1

0

あなたのコードには複数の間違いがあります。注釈を付けましょう:

<?php
function user_exists($username) {

$username = sanitize($username);

$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'"); // $query now contains the result of the query (a Resource)

// Here you try to run the resource *again* trough mysql_query, with with 2 parameters (which results in the warning). I am not quite sure what you intended.
return (mysql_result(mysql_query($query, 0) == 1) ? true : false);

}
?>

それを私が直した。

<?php
function user_exists($username) {
  $username = sanitize($username);  // This hopefully santizes the username. Better use mysql_real_escape_string($username)

  $query = "SELECT COUNT(`user_id`) FROM `users` WHERE `username` = '$username'";

  $result = mysql_query($query) or die(mysql_error());  // Check if query was successful
  $row = mysql_fetch_array($result); // fetch the first row
  return ($row[0] > 1);  // If there is one or more users with this name, return true.

}
// omit the closing ?>, because it causes trouble, when there are any chars behind it (headers alreay sent error etc.)
于 2013-02-21T15:16:12.083 に答える