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 的末尾即可。

如果您是 PHP 新手,这可能是相当大的一步,但我认为您也应该阅读mysqliPHP 中的课程。它允许更安全地执行查询。

否则,这是一种更安全的方法:

$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

我认为您需要将它(可能与 AND 一起)添加到 WHERE 子句:

$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任意数量的检查,因此您可以轻松地拥有三个而没有两个,只需and priv_level='$priv_level'在最后添加即可。

编辑:正如@thorarin 的回答所提到的,这是建立 SQL 查询的一种冒险方式,并且参数绑定会更安全——但这与在WHERE子句中使用两列和三列是正交的。

于 2009-06-10T15:15:45.980 回答