大家好,只是一个简单的问题(我认为应该很容易解决)。在查询的 WHERE 语句中,有没有办法在其中包含多个列?这是我的代码:
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass'";
我想要做的是在 WHERE 之后添加另一列(称为 priv_level = '$privlevel')。但是,我不确定如何执行此操作的语法。
谢谢您的帮助!
阅读 SQL。但无论如何,只需添加AND priv_level = '$privlevel'
到 SQL 的末尾即可。
如果您是 PHP 新手,这可能是相当大的一步,但我认为您也应该阅读mysqli
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) . "'";
为易读性包装:
$sql="
SELECT *
FROM $tbl_name
WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'
";
其他人会警告您该声明的危险性。:-) 想想SQL 注入。
$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.'\'';
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' AND priv_level = '$privlevel'";
附带说明:您在这里所做的似乎是非常糟糕的做法。
我认为您需要将它(可能与 AND 一起)添加到 WHERE 子句:
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";
嗯,您的查询已经在 WHERE 子句中使用了多个列:)
除了 SQL 注入问题(小心):
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level='$privlevel'";
该WHERE
子句可以进行AND
任意数量的检查,因此您可以轻松地拥有三个而没有两个,只需and priv_level='$priv_level'
在最后添加即可。
编辑:正如@thorarin 的回答所提到的,这是建立 SQL 查询的一种冒险方式,并且参数绑定会更安全——但这与在WHERE
子句中使用两列和三列是正交的。