用PHP查询MySQL

时间:2010-01-25 15:37:00

标签: php mysql

此代码有什么问题:

$q = query("select * from users where email = '$_POST['email']' and name = '$_POST['name']'");

解析错误:解析错误,在第16行的C:\ wamp \ www \ conn \ index.php中期待T_STRING' or T_VARIABLE'或'T_NUM_STRING'

提前致谢。

7 个答案:

答案 0 :(得分:8)

 $q = query("select * from users where email = '{$_POST['email']}' and name = '{$_POST['name']'}");

你错过了两个引号。另外:
1)总是逃避用户输入(对于security reasons):

$email = mysql_real_escape_string($_POST['email']);
$name = mysql_real_escape_string($_POST['name']);
$q = query("select * from users where email = '{$email}' and name = '{$name}'");

2)获取一个代码突出显示的编辑器,这样您将来就不会遇到类似的问题。我推荐Notepad++

答案 1 :(得分:2)

你应该用大括号包围你的内联变种。

像这样:

$q = query("select * from users where email = '{$_POST['email']}' and name = '{$_POST['name']}'");

答案 2 :(得分:2)

  1. 您直接在SQL查询中使用$ _POST,非常坏。
    使用:

    $ email = mysql_real_escape_string($ _ POST ['email']);
    $ name = mysql_real_escape_string($ _ POST ['name']);
    $ q = query(“SELECT ... $ name ... $ email”);

  2. 我建议使用字符串连接而不是在字符串中嵌入变量,因为它(imho)更容易阅读

    $ q = query(“SELECT ...”。$ name。“...”。$ email);

  3. SELECT *不好(除非你真的,想要所有字段)

答案 3 :(得分:2)

试试这个:

$q = query("select * from users where email = '" . $_POST['email'] . "' and name = '" . $_POST['name'] . "'");

答案 4 :(得分:2)

你正在使用双引号在$ _POST ['email']附近加上引号,并在其中使它被解释为错误的方式

这将以正确的方式运作: $ q = query('select * from users where email ='。$ _ POST ['email']。'和name ='。$ _ POST ['name']);

但即使它有效,将post变量直接传递给查询仍然是错误的。作为开发人员,您需要学会“永远不要信任用户”。所以最好的方法是通过以下方式清除它来清理它:

$name = mysql_real_escape_string($_POST['name']);
$email = mysql_real_escape_string($_POST['email']);
$q = query("select * from users where email = $email and name = $name");

或者这个:

$q = query('select * from users where email = '.mysql_real_escape_string($email).' and name = '.mysql_real_escape_string($name));

(你喜欢什么方式)

答案 5 :(得分:1)

Pease不这样做。这是SQL注入的完美示例。

更好的版本:

$email = mysql_real_escape_string($_POST['email']);
$name = mysql_real_escape_string($_POST['name']);
$q = query("select * from users where email = '$email' and name = '$name'");

答案 6 :(得分:1)

解析错误:解析错误,期待T_STRING'或T_VARIABLE'或'T_NUM_STRING'

习惯这个错误。始终意味着存在报价问题。

熟悉w /使用“和'