Php 类似操作上的SQL错误SQLSTATE[42000]

Php 类似操作上的SQL错误SQLSTATE[42000],php,mysql,Php,Mysql,我想使用一个简单的查询进行搜索 此查询在另一个页面和另一个表中运行良好。 我只是复制并粘贴了它 这是我的疑问 $stmt = $pdo->prepare("SELECT * FROM _all_users WHERE fullname LIKE '%".$q."%' OR mobile LIKE '%".$q."%' ORDER BY time_stamp DESC"); $stmt->execute(); 它一定在工作。但是我得到了这个错误 致命错误:未捕获PDO

我想使用一个简单的查询进行搜索

此查询在另一个页面和另一个表中运行良好。 我只是复制并粘贴了它

这是我的疑问

    $stmt = $pdo->prepare("SELECT * FROM _all_users WHERE fullname LIKE '%".$q."%' OR mobile LIKE '%".$q."%' ORDER BY time_stamp DESC");
    $stmt->execute();
它一定在工作。但是我得到了这个错误

致命错误:未捕获PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解使用“或”的正确语法‌ 类似移动设备的“%848%”按时间戳排序描述限制15偏移量0在/var/www/_am/ajax/getLists.php:171堆栈跟踪:0/var/www/_am/ajax/getLists.php171:PDO->准备从第171行/var/www/_am/ajax/getLists.php中抛出的{main}中选择*

有什么想法吗?

试试看

$stmt = $pdo->prepare("SELECT * FROM _all_users (WHERE fullname LIKE '%".$q."%' OR mobile LIKE '%".$q."%') ORDER BY time_stamp DESC");
    $stmt->execute();


q美元的价值是多少?变量插值后的查询是什么样子的?请阅读。使用with,而不是使用字符串连接生成查询。有关一些好的示例,请参见和。请仅显示整个查询。这并不难做到。如果你需要我们的帮助,你应该按我们的要求去做。我们在帮你一个忙。请尊重这一点,并提供我们需要的帮助。事实上,您也应该显示构建该查询的代码。没关系。如果你不能满足我的要求,我也帮不了你。祝你好运。@roberthofer在阅读上述评论时说:请理解使用PDO本身并不能保护你免受SQL注入的影响。只有在使用绑定参数时,使用准备好的语句才能防止SQL注入。在没有绑定参数的查询上使用prepare(如您在此处所做的)根本无法提供保护。
$stmt = $pdo->prepare("SELECT * FROM _all_users WHERE (fullname LIKE '%".$q."%' OR mobile LIKE '%".$q."%') ORDER BY time_stamp DESC");
    $stmt->execute();