1

ちょっと質問です(簡単な修正だと思います)。クエリのWHEREステートメントで、複数の列を内部に含める方法はありますか?これが私のコードです:

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass'";

私がやりたいのは、WHEREの後に別の列を追加することです(priv_level ='$ privlevel'と呼ばれます)。ただし、その方法についての構文はわかりませんでした。

助けてくれてありがとう!

4

7 に答える 7

3

SQLを読んでください。しかしとにかく、それを行うにAND priv_level = '$privlevel'は、SQLの最後に追加するだけです。

mysqliPHPを初めて使用する場合、これはかなり大きなステップになる可能性がありますが、PHPのクラスについても読む必要があると思います。これにより、クエリをより安全に実行できます。

それ以外の場合は、次の方が安全です。

$sql = "SELECT * FROM $tbl_name WHERE " .
       "username = '" . mysql_real_escape_string($myusername) . "' AND " .
       "pwd = '" . mysql_real_escape_string($pass) . "' AND " .
       "priv_level = '" . mysql_real_escape_string($privlevel) . "'";
于 2009-06-10T15:14:14.797 に答える
0

読みやすさのためにラップ:

$sql="
  SELECT * 
  FROM $tbl_name 
  WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'
";

他の誰かがその声明がいかに危険であるかについてあなたに警告するでしょう。:-) SQLインジェクションを考えてください。

于 2009-06-10T15:14:11.083 に答える
0
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";

「」を使用したくない場合は、次のことを試してください。

$sql='SELECT * FROM '.$tbl_name.' WHERE username=\''.$myusername.'\' and pwd=\''.$pass.'\' and priv_level=\''.$privlevel.'\'';
于 2009-06-10T15:14:28.913 に答える
0
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' AND priv_level = '$privlevel'";

ちなみに、ここで行っているように見えることは、かなり悪い習慣です。

于 2009-06-10T15:14:46.090 に答える
0

WHERE句に追加する必要があると思います(ANDを使用している可能性があります)。

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";
于 2009-06-10T15:15:43.450 に答える
0

ええと、あなたのクエリはすでにWHERE句で複数の列を使用しています:)

SQLインジェクションの問題はさておき(注意してください):

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level='$privlevel'";
于 2009-06-10T15:15:43.607 に答える
0

WHERE句は任意のAND数のチェックを行うことができるため、2つではなく3つを簡単に作成でき、and priv_level='$priv_level'最後に追加するだけです。

編集:@thorarinの回答が述べているように、これはSQLクエリを構築するための危険な方法であり、パラメータのバインドはより安全ですが、これはWHERE句で2列と3列を使用するのと直交しています。

于 2009-06-10T15:15:45.980 に答える