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!随时与我们联系,随时乐意提供帮助。:)