Несколько столбцов после ГДЕ в PHP? - PullRequest
1 голос
/ 10 июня 2009

Привет всем, просто быстрый вопрос (я думаю, это должно быть легко исправить). В операторе WHERE в запросе есть ли способ содержать несколько столбцов внутри? Вот мой код:

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

Что я хочу сделать, это добавить еще один столбец после WHERE (называемый priv_level = '$ privlevel'). Однако я не был уверен в синтаксисе, как это сделать.

Спасибо за помощь!

Ответы [ 7 ]

3 голосов
/ 10 июня 2009

Читайте по 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) . "'";
0 голосов
/ 10 июня 2009

Предложение WHERE может AND любое количество проверок, поэтому вы можете легко иметь три, где их нет, просто добавьте and priv_level='$priv_level' в самом конце.

Редактировать: как упоминается в ответе @ thorarin, это рискованный способ создания запросов SQL, и привязка параметров будет более безопасной, но это ортогонально использованию двух столбцов против трех в предложении WHERE.

0 голосов
/ 10 июня 2009

Хм, ваш запрос уже использует несколько столбцов в предложении WHERE:)

Проблемы с внедрением SQL (будьте осторожны):

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level='$privlevel'";
0 голосов
/ 10 июня 2009

Я думаю, вам нужно добавить его (может быть с AND) в предложение WHERE:

$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' and priv_level = '$privlevel'";
0 голосов
/ 10 июня 2009
$sql="SELECT * FROM $tbl_name WHERE username='$myusername' and pwd='$pass' AND priv_level = '$privlevel'";

На заметку: то, что вы здесь делаете, - довольно плохая практика.

0 голосов
/ 10 июня 2009
$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.'\'';
0 голосов
/ 10 июня 2009

Упаковано для разборчивости:

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

Кто-то еще предупредит вас о том, насколько опасно это утверждение. :-) Подумайте SQL-инъекция .

...