Php 在数据库上完成查询时发生SQL语法错误

Php 在数据库上完成查询时发生SQL语法错误,php,mysql,Php,Mysql,我正试图在视频数据库中搜索有关它们的信息。所有内容都在一页中。没有外部表单发布到此表单,其位于此页面上 <?php $connection = mysql_connect("localhost","root","Oliver") or die (mysql_error()); mysql_select_db("videos", $connection) or die (mysql_error()); $sql = "SELECT * FROM videos"; if (isset($

我正试图在视频数据库中搜索有关它们的信息。所有内容都在一页中。没有外部表单发布到此表单,其位于此页面上

<?php
$connection = mysql_connect("localhost","root","Oliver") or die (mysql_error());

mysql_select_db("videos", $connection) or die (mysql_error());

$sql = "SELECT * FROM videos";

if (isset($_POST['search'])){
  $search_term = mysql_real_escape_string($_POST['search_box']);

  $sql .= "WHERE name LIKE '{$search_term}'";
}

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

?>
<html>
<form name="search_form" method="POST" action="display_data.php">
  <input type="text" name="search_box" placeholder="Search..."/>
  <input type="submit" name="search" value="Search"/>
</form>
<table style="width:70%; cellpadding:5 cellspace:6">

<tr>
  <td><strong>Film ID</strong></td>
  <td><strong>Name</strong></td>
</tr>
<?php while ($row = mysql_fetch_array($query)) {?>
  <tr>
    <td><?php echo $row['ID']; ?></td>
    <td><?php echo $row['name']; ?></td>
  </tr>


<?php } ?>

</table>
</html>

walking只是一个搜索词。

在实际运行$query之前,您应该
echo$query
,复制输出并直接在mysql会话中运行它。我猜它会告诉您,在
“WHERE”
关键字之前需要一个空格


哦,
mysql\u query
已被弃用,而且非常危险-请查看
PDO或mysqli

在实际运行$query之前,您应该
echo$query
,复制输出并直接在mysql会话中运行它。我猜它会告诉您,在
“WHERE”
关键字之前需要一个空格


哦,
mysql\u query
已被弃用,非常危险-请查看
PDO或mysqli

看起来您的问题在于字符串的浓缩。结果将是
SELECT*FROM videoswwhere name,比如“{$search\u term}”

之前添加一个空格,在此处
错误应该消失


您不应该再使用不推荐使用的
mysql.*
API。将
mysqli.*
PDO
与准备好的语句一起使用,以防止sql注入。

看起来您的问题在于字符串的压缩。结果将是
SELECT*FROM videoswwhere name,比如“{$search\u term}”

之前添加一个空格,在此处
错误应该消失


您不应该再使用不推荐使用的
mysql.*
API。在准备好的语句中使用
mysqli.*
PDO
,以防止sql注入。

只需在WHERE子句中添加空格,如下所示:

$sql .= " WHERE name LIKE '{$search_term}'";

只需在WHERE子句中添加空格,如下所示:

$sql .= " WHERE name LIKE '{$search_term}'";

只需在
之前的
位置添加一个空格即可

$sql .= " WHERE name LIKE '{$search_term}'";

只需在
之前的
位置添加一个空格即可

$sql .= " WHERE name LIKE '{$search_term}'";
你的问题是

$sql = "SELECT * FROM videos";
$sql .= "WHERE name LIKE '{$search_term}'";
视频和位置之间没有空格

你需要增加空间

$sql .= " WHERE name LIKE '{$search_term}'"; 
         ^
你的问题是

$sql = "SELECT * FROM videos";
$sql .= "WHERE name LIKE '{$search_term}'";
视频和位置之间没有空格

你需要增加空间

$sql .= " WHERE name LIKE '{$search_term}'"; 
         ^

您可以使用
addslashes()
函数,而不是使用
mysql\u real\u escape\u string()
。引号字符串带有斜杠,因此,当您在字段中添加任何撇号时,它将非常有用

我已经用上面的细节设置了php代码,替换为php代码部分并检查

<?php
$connection = mysql_connect("localhost","root","Oliver") or die (mysql_error());

mysql_select_db("videos", $connection) or die (mysql_error());

//Select statement for query

$sql = " SELECT * FROM videos ";
//Check for request
if (isset($_POST['search'])){
   //Prepare request value for query
   $search_term = addslashes($_POST['search_box']);

   //Where statement
  $sql .= " WHERE name LIKE '" . $search_term . "' ";
}

$query = mysql_query($sql) or die(mysql_error());
?>

您可以使用
addslashes()
函数,而不是使用
mysql\u real\u escape\u string()
。引号字符串带有斜杠,因此,当您在字段中添加任何撇号时,它将非常有用

我已经用上面的细节设置了php代码,替换为php代码部分并检查

<?php
$connection = mysql_connect("localhost","root","Oliver") or die (mysql_error());

mysql_select_db("videos", $connection) or die (mysql_error());

//Select statement for query

$sql = " SELECT * FROM videos ";
//Check for request
if (isset($_POST['search'])){
   //Prepare request value for query
   $search_term = addslashes($_POST['search_box']);

   //Where statement
  $sql .= " WHERE name LIKE '" . $search_term . "' ";
}

$query = mysql_query($sql) or die(mysql_error());
?>


哇,这些家伙很快-我需要好好复习一下我的触摸打字我认为你是第一个,所以我会把你的作为答案,谢谢mateOli,TBH我认为@Ram击败了我,他通过指示你使用mysqli/pdo功能增加了价值。我严重不确定,页面因为所有评论而崩溃,因此如果他们是第一个回复,我会很高兴地将其更改为他们。否则你可以留着它。哇,这些家伙很快-我需要复习一下我的触摸打字我认为你是第一个,所以我会把你的作为答案,谢谢mateOli,TBH我认为@Ram击败了我,他通过指示你使用mysqli/pdo功能增加了价值。我严重不确定,页面因为所有评论而崩溃,因此如果他们是第一个回复,我会很高兴地将其更改为他们。否则您可以保留它。感谢您的提醒,这并没有帮助解决问题,但肯定提供了一些很好的建议,我将研究Mysqli,因为它听起来与MySql相似,目前仍需要解决此问题,但如果这不是当前的错误,它很快就会出现:)。。。我认为另一个问题可能是“{$search\u term}”。。试着像“'”$搜索搜索词。"'"; 相反,感谢大家的提醒,这并没有帮助解决问题,但确实提供了一些很好的建议,我会研究Mysqli,因为它听起来很像MySql,现在仍然需要解决这个问题,但如果这不是当前的错误,很快就会出现:)。。。我认为另一个问题可能是“{$search\u term}”。。试着像“'”$搜索搜索词。"'"; 相反。我在哪里输入数据,它只是一个空白页。不要使用addslashes,它很容易受到攻击@Oliver Ketley:你的意思是使用给定代码后没有显示内容吗?我想我会研究提供的链接,我的问题已经解决,谢谢你的帮助。奥利弗,很高兴!随时与我们联系,随时乐意提供帮助。:)我在哪里输入数据,它只是一个空白页。不要使用addslashes,它很容易受到攻击@Oliver Ketley:你的意思是使用给定代码后没有显示内容吗?我想我会研究提供的链接,我的问题已经解决,谢谢你的帮助。很高兴见到Oliver!随时与我们联系,随时乐意提供帮助。:)