Php 数据库选择查询中的特殊字符转义
我有以下查询,如果名称包含特殊字符,则该查询不起作用:Php 数据库选择查询中的特殊字符转义,php,mysql,mysql-real-escape-string,Php,Mysql,Mysql Real Escape String,我有以下查询,如果名称包含特殊字符,则该查询不起作用: case 'byMovie': $items_per_page = 20; $offset = 0; $page_count = 0; include('Connection.php'); $query1 = $conn->prepare(" SELECT DISTINCT s.starName , s.starImdbID , s.movieName
case 'byMovie':
$items_per_page = 20;
$offset = 0;
$page_count = 0;
include('Connection.php');
$query1 = $conn->prepare("
SELECT DISTINCT s.starName
, s.starImdbID
, s.movieName
, p.posterLink
FROM star_film as s
LEFT
JOIN star_Posters as p
ON s.starImdbID = p.starImdbID
WHERE s.movieName LIKE :q
");
$query1->execute(array(':q' => '%' . $searchText . '%'));
$row_count = $query1->rowCount();
$page_count = (int)ceil($row_count / $items_per_page);
$page = min($page_count, filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT, array(
'options' => array(
'default' => 1,
'min_range' => 1,
),
)));
if($page > $page_count) { //double check that request page is in range
$page = 1; // error to user, maybe set page to 1
}
$offset = ($page - 1) * $items_per_page;
$query = $conn->prepare("SELECT DISTINCT s.starName, s.starImdbID, s.movieName, p.posterLink FROM star_film as s LEFT JOIN star_Posters as p ON s.starImdbID = p.starImdbID WHERE s.movieName LIKE :q LIMIT " . $offset . "," . $items_per_page);
$query->execute(array(':q' => '%' . $searchText . '%'));
break;
}
例如,如果电影名称为“鱼故事”,则会显示以下错误:
致命错误:未捕获的异常“PDOException”带有消息
'SQLSTATE[42000]:语法错误或访问冲突:1064您有
SQL语法错误;检查与您的产品相对应的手册
MySQL服务器版本,以便在第行使用接近'-20,20'的语法
1'in/var/www/searchcast.php:90堆栈跟踪:#0
/var/www/searchcast.php(90):PDO->prepare('selectdistinct…')#1
{main}在第90行的/var/www/searchcast.php中抛出
我试着按照建议添加mysql\u real\u escape\u字符串(s.movieName),但效果不太好
谁能帮帮我吗
感谢您,您可以在以下内容中阅读:
LIMIT子句可用于约束返回的行数
通过SELECT语句。LIMIT接受一个或两个数值参数,
必须是非负的整数常量(使用
编写的声明)
我认为错误与您使用的偏移量值有关(显然-20
)。你必须想办法避免这个数字为负数
看到您的代码时,当$page=0
转换为:
$offset = (0 - 1) * 20 = -20;
这就是错误。当$page
值为0或类似值时,可以强制将其值设为1
希望有帮助。我发现右括号让人困惑。@草莓:对不起,我刚刚编辑了我的问题'-20,20'
美元偏移量真的是-20吗?@mihai:即使没有偏移量艺术,当我直接在DB中编写查询时,我也会收到同样的错误:“您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以了解在“鱼故事”附近使用的正确语法。您可以使用查询和/或这些变量中的值编辑您的问题吗?