0

ここで何が起こっているのか誰か教えてください。このコードが機能せず、次のエラーがスローされる理由がわかりません。

You have an error in your SQL syntax, check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND role != 7 AND role != 4' at line 3

    $sql = 'SELECT * FROM tblusers
                 INNER JOIN permissions on tblusers.usrID = permissions.user_id
                 WHERE permissions.team_id='.$team_id.' AND role != 7 AND role != 4';

    require("connection.php");

    $result = mysql_db_query($DBname,$sql,$link) or die(mysql_error()); 

    while($row = mysql_fetch_assoc($result))
    {
      $message->addTo($row['usrEmail'], $row['usrFirst'] . ' ' . $row['usrLast']);
    }

変数 $team_id が正常に機能していることはわかっています。これを「エコー」すると正常に機能するからです。ここで私が間違っていることについてのアイデアはありますか? ありがとう!

4

4 に答える 4

4

echo out $sql、データベースでステートメントを試すか、ここに貼り付けてデバッグできるようにします。最初は、変数を引用符で囲む必要があるのではないかと疑っていましたが、数値なので必要ないでしょう。

両方のテーブルにrow列がありますか、それとも 1 つのテーブルだけに列がありますか?

于 2009-11-07T00:44:55.867 に答える
3

空の場合、正確なエラーメッセージが表示$team_idされます-コードのその時点で設定されていますか?

于 2009-11-07T00:49:45.547 に答える
1

プリペアドステートメントを使用することで、引用符の問題を回避できます。

$dbConn = new mysqli("127.0.0.1", "username", "password", "db");
$stm = $dbConn->prepare("SELECT * FROM tblusers WHERE team_id = ?");
$stm->bind_param("i", $team_id); /* 'i' for an integer */
$stm->execute();
于 2009-11-07T00:59:53.337 に答える
1

role フィールドがあいまいです tblusers.role を試してください

于 2009-11-07T17:57:02.980 に答える