1

ユーザー名パスワードをmysqlデータベースに挿入する登録プログラムを作成しました。現在、ユーザー名のexixtsを確認しようとしています。以下のプログラムを書きました。動いていない。「mysql_num_rows() はパラメーター 1 がリソースであると想定しています」と表示されます。あなたの専門家の提案が本当に必要です

登録.php

<?php 
require 'jcon.php';
if(isset($_POST["username"], $_POST["firstname"],$_POST["password"])){
    $username=$_POST["username"];
    $firstname=$_POST["firstname"];
    $password=$_POST["password"];
}
$query = mysql_query("SELECT * FROM member WHERE username='$username'");
if(mysql_num_rows($query) != 0)
{
echo "Username already exists";
}
else{
$sql="INSERT INTO member (username, firstname, password)
VALUES ('$username', '$firstname','$password')";}
if(!mysqli_query($con,$sql)){
    die('Error: ' . mysqli_error($con));
}
echo "Dear {$firstname} ! you have been successfully registered. "
?>
4

2 に答える 2

1

「mysql_num_rows() はパラメーター 1 がリソースであることを期待しています。

これは、失敗時にmysql_query戻りfalse、悪名高いトリガーを引き起こす典型的なケースです。

mysql_num_rows() は、パラメーター 1 がリソースであることを想定しています

これは、複数の要因によって引き起こされる可能性があります。phpMyAdmin でクエリを実行するか、データベースに対して直接実行してみて、エラーを確認するか、 を介して最後の mysql エラーを取得してくださいmysql_error

の戻り値が でmysql_queryあるfalseかどうか、またはmysql_error文字列が空でないかどうかを常に確認することをお勧めします。

if ($result and empty(mysql_error()))
    // everything ok

注: 絶対に混ぜmysql_mysqli_機能させないでください。関数は非推奨と見なされているmysqliため、選択する必要がある場合は、私が選択します。mysql_*

于 2013-05-04T01:37:29.467 に答える
0

次のクエリを使用できます。

SELECT COUNT(*) as cnt FROM member WHERE username = '$username'`. 

彼が登録されていない場合、cnt 列は を返し0ます。したがって、クエリが結果を再現しない場合に返される可能性があり、友人
がパラメーターとして作成することはできないため、必要なパラメーターを回避できます。mysql_queryFALSEmysql_fetch

于 2013-05-04T01:40:05.550 に答える