-1

だから私が得るエラーは、この mysql_num_rows() は、パラメーター 1 がリソースであり、/home 行 80 で指定されたブール値であると想定しています

ここに私のコードがあります

}if($action['result'] != 'error'){

        mysql_query  ("INSERT INTO Matching VALUES('$firstName','$lastName','$buddy','$party','$sex','$req_sex','$skill','$req_skill','$phone')");
        $match_buddy= mysql_query("SELECT * FROM Matching WHERE Buddytype='$buddy'");
        $numrow_buddy = mysql_num_rows($match_buddy);
        if($numrow_buddy < $party-1)
    {
        echo "no matches";
        }if($numrow_buddy >= $party-1)
        {echo "$numrow_buddy";
        //matching the sex
Line 80     $match_sex= mysql_query("SELECT * FROM Matching WHERE Sex='$req_sex' AND First Name !='$firstname' AND Last Name !='$lastName'");
        $numrow_sex = mysql_num_rows($match_sex);

            if($req_sex == 3)
    {       // if they dont care which sex they have move automatically onto skill
            $match_skill= mysql_query("SELECT * FROM Matching WHERE Skill='$req_skill', First Name !='$firstname', Last Name !='$lastName'");
            $numrow_skill = mysql_num_rows($match_skill);
4

2 に答える 2

1

当面の問題は、スペースが含まれる列名 ( First Nameand ) の周りにバックティックを使用する必要があることです。Last Nameしたがって、変更

$match_sex= mysql_query("SELECT * FROM Matching WHERE Sex='$req_sex' AND First Name !='$firstname' AND Last Name !='$lastName'");

$match_sex= mysql_query("SELECT * FROM Matching WHERE Sex='$req_sex' AND `First Name` !='$firstname' AND `Last Name` !='$lastName'");

2 番目の select ステートメントについても同様です。

余談ですが、コードは SQL インジェクションに対して脆弱です。mysqli拡張機能に切り替えて、パラメーター化されたクエリを使用します。

その他の考慮事項: @bksi が回答で述べたように、すべてのデータをクライアントにプルするよりも、db 側で行数を計算し、その数だけを返す方がよいでしょう。それに加えて、条件付きカウント手法を使用して、このようなクエリですべてのカウントを一度に取得できます

SELECT SUM(CASE WHEN Sex = '$req_sex' THEN 1 ELSE 0 END) numrow_sex,
       SUM(CASE WHEN Skill = '$req_skill' THEN 1 ELSE 0 END) numrow_skill
  FROM Matching 
 WHERE `First Name` != '$firstname', `Last Name` != '$lastName'"
于 2013-06-02T01:30:47.980 に答える
0

mysql_query は結果リソースを返すかfalse、エラーが発生した場合に返します。
mysql_query の後で試してecho(mysql_error())、実際のエラーを確認してください。

于 2013-06-02T01:30:33.467 に答える