-2

这是我收到的错误消息:

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 中。

4

8 回答 8

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 注入的影响。

于 2013-07-08T18:34:47.457 回答
3

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

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

这也将保护您免受 sql 注入。

于 2013-07-08T18:36:02.120 回答
1

尝试这个

$sql = mysql_query("SELECT * FROM ai 
                 WHERE key LIKE '".mysql_real_escape_string($_POST['term'])."'") 
                or die(mysql_error());
于 2013-07-08T18:45:53.523 回答
0

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

更新上面的查询。

术语不应有任何双引号

于 2013-07-08T18:39:23.107 回答
0

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

其次,应该引用搜索词。

于 2013-07-08T18:36:04.603 回答
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());
于 2013-07-08T18:37:34.363 回答
-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>
于 2013-07-08T18:35:43.017 回答
-1

用这个替换你的行错误:

$sql = mysql_query("SELECT * FROM ai WHERE key LIKE $_POST[\"term\"];") or die
    (mysql_error());
于 2013-07-08T18:37:33.947 回答