为什么我收到有关HTML表单的PHP错误

时间:2013-07-08 18:32:57

标签: php html mysql sql

这是我收到的错误消息:

Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/content/50/8492150/html/colejoh/web/ai/form.php on line 10

对于我的HTML表单,我使用的是此代码:

<html>
    <head>
    </head>
    <body>
        <form action="form.php" method="post">
            Search: <input type="text" name="term" /><br />
            <input type="submit" name="submit" value="Submit" />
        </form>
        <body OnLoad="document.myform.query.focus();">
    </body>
</html>

我的form.php代码:

<body>
   <?php
 $con = mysql_connect ("xxx.xxx.xxx.xxx", "user", "password");
 mysql_select_db ("user", $con);

  if (!$con)
    { 
    die ("Could not connect: " . mysql_error());
    } 
    $sql = mysql_query("SELECT * FROM ai WHERE key LIKE $_POST["term"];") or die
        (mysql_error());

       while ($row = mysql_fetch_array($sql)){
    echo 'ID: ' .$row['id'];
    echo '<br /> Key: ' .$row['key'];
    echo '<br /> Page: '.$row['page'];
  }

  mysql_close($con)
   ?>
     </body>

我认为错误发生在LIKE $_POST["term"];")的sql语句中的form.php中。我要做的是使代码成为我在表单页面上提交的内容。

8 个答案:

答案 0 :(得分:5)

此行导致问题:

 $sql = mysql_query("SELECT * FROM ai WHERE key LIKE $_POST["term"];") or die

将其更改为:

 $sql = mysql_query("SELECT * FROM ai WHERE key LIKE " . mysql_real_escape_string($_POST["term"]) . ";") or die

此外,您应该避免使用不推荐使用的mysql_函数。相反,您应该使用mysqli_或PDO。此代码也容易受到sql注入。

答案 1 :(得分:3)

您没有正确编码双引号。将$ sql赋值更改为

$sql = mysql_query("SELECT * FROM ai WHERE key LIKE '".mysql_real_escapse_string($_POST["term"])."'") or die(mysql_error());

这也可以防止sql注入。

答案 2 :(得分:1)

试试这个

$sql = mysql_query("SELECT * FROM ai 
                 WHERE key LIKE '".mysql_real_escape_string($_POST['term'])."'") 
                or die(mysql_error());

答案 3 :(得分:0)

首先,你不应该发布你的mysql用户名和密码。

其次,应引用搜索词。

答案 4 :(得分:0)

在php中,你必须非常小心处理字符串变量。要连接多个字符串变量,您应该这样做:

"SELECT * FROM ai WHERE key LIKE" . $_POST["term"] . ";"

为了让您的生活更轻松,您应该经常创建“帮助”变量,如下所示:

$my_variable="SELECT * FROM ai WHERE key LIKE" . $_POST["term"] . ";"

然后将其添加到您的脚本中,如下所示:

$sql = mysql_query($my_variable) or die(mysql_error());

答案 5 :(得分:0)

$sql = mysql_query("SELECT * FROM ai WHERE key LIKE 'mysql_real_escapse_string($_POST[term])'");

更新以上查询。

术语

不应有任何双引号

答案 6 :(得分:-1)

试试这个

<body>
   <?php
 $con = mysql_connect ("xxx.xxx.xxx.xxx", "user", "password");
 mysql_select_db ("user", $con);

  if (!$con)
    { 
    die ("Could not connect: " . mysql_error());
    } 
    $sql = mysql_query("SELECT * FROM ai WHERE key LIKE ".$_POST["term"].";") or die
        (mysql_error());

       while ($row = mysql_fetch_array($sql)){
    echo 'ID: ' .$row['id'];
    echo '<br /> Key: ' .$row['key'];
    echo '<br /> Page: '.$row['page'];
  }

  mysql_close($con)
   ?>
     </body>

答案 7 :(得分:-1)

用这个替换你的行错误:

$sql = mysql_query("SELECT * FROM ai WHERE key LIKE $_POST[\"term\"];") or die
    (mysql_error());