我的网站上有一个搜索字段功能,下面是PHP代码:
if(isset($_GET['search_ti']) && $_GET['search_ti'] != "")
{
$search_ti = preg_replace('#[^a-z 0-9?!-]#i', '', $_GET['search_ti']);
$sqlCommand = "
SELECT * FROM page WHERE title LIKE '%$search_ti%' OR body LIKE '%$search_ti%'
";
$result = $mysqli->query($sqlCommand) or die(mysql_error());
...
网址变量search_ti
是搜索的关键字,我从网址获取。例如:
searchResult.php?search_ti=home
如果在我的MySQL表中找到关键字,则结果显示且没有错误。
但是如果找不到关键字,则Web浏览器会生成以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-4,4' at line 1
我的代码出了什么问题?
附加信息:
完整的PHP代码:http://jsfiddle.net/eQSZc/
关键字:home。该错误仅显示在我的表中找不到关键字。
答案 0 :(得分:0)
另一种替代方法是使用 PDO
。
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
$keyword = '%' . search_ti . '%';
$stmt = $dbh->prepare("SELECT *
FROM page
WHERE title LIKE ? OR
body LIKE ?");
$stmt->bindParam(1, $name);
if ($stmt->execute())
{
while ($row = $stmt->fetch())
{
print_r($row);
}
}
?>
这将允许您选择带单引号的记录。
答案 1 :(得分:0)
将pagination_mechanism_and_buttons_variables_for_Search.php
更改为http://jsfiddle.net/GsNmw/1/
$limit
我在构建$limit
之前添加了以下块,并更改了$start = ($pn - 1) * $itemsPerPage;
if($start<0){
$start = 0;
}
$limit = 'LIMIT ' .$start .',' .$itemsPerPage;
。
{{1}}
这可以避免负面限制,从而避免出现错误。