Php 带有LIKE的SQL错误

Php 带有LIKE的SQL错误,php,mysql,sql,Php,Mysql,Sql,PHP 查询正在被输出,我觉得很好,但由于某种原因,我得到了一个语法错误(我认为是),但是我似乎无法发现任何问题?运算符是一个字符串函数。所以需要用单引号(')将其括起来 运算符是一个字符串函数。所以需要用单引号(')将其括起来 字符串周围缺少引号,因此您的问题看起来像: SELECT * FROM `orders` WHERE id LIKE '%1%'; 而不是: SELECT * FROM orders where id LIKE %55% 这个答案应该可以解决您的问题,但我强烈建议您

PHP

查询正在被输出,我觉得很好,但由于某种原因,我得到了一个语法错误(我认为是),但是我似乎无法发现任何问题?

运算符是一个字符串函数。所以需要用单引号(')将其括起来

运算符是一个字符串函数。所以需要用单引号(')将其括起来


字符串周围缺少引号,因此您的问题看起来像:

SELECT * FROM `orders` WHERE id LIKE '%1%';
而不是:

SELECT * FROM orders where id LIKE %55%
这个答案应该可以解决您的问题,但我强烈建议您使用
=
而不是像
这样的
,因为您正在寻找由
id
标识的唯一订单


您当前编写脚本的方式是,如果
id
为55,您将获得订单55、255、5500、1559…

字符串周围缺少引号,因此您的任务看起来类似于:

SELECT * FROM `orders` WHERE id LIKE '%1%';
而不是:

SELECT * FROM orders where id LIKE %55%
这个答案应该可以解决您的问题,但我强烈建议您使用
=
而不是像
这样的
,因为您正在寻找由
id
标识的唯一订单


您当前编写脚本的方式是,如果
id
为55,您将收到订单55、255、5500、1559…

请用单个qoute“”编写模式,就像我确定的那样

SELECT * FROM orders where id LIKE '%55%'


$sql = "SELECT * FROM `orders` ";

switch ($_POST['criteria']) {

    case 'id':
        $sql .= "WHERE id LIKE '%" . (int) $_POST['search_input'] . "%'";
    break;
    case 'OCR':
        $sql .= "WHERE OCR LIKE '%" . $db->quote($_POST['search_input']) . "%'";
    break;
    case 'name':
        $arr = explode(' ', $_POST['search_input']);
        $firstname = $arr[0];

        if (isset($arr[1])) {
            $lastname = $arr[1];
        } else {
            $lastname = null;
        }

        $sql .= "WHERE firstname LIKE '%" . $db->quote($firstname) . "% AND lastname LIKE '%" . $db->quote($lastname) . "%'";
    break;
}

echo $sql;

$stmt = $db->query($sql);

$rows = $stmt->fetchAll();

请用单字“qoute”书写图案,并像我一样确定

SELECT * FROM orders where id LIKE '%55%'


$sql = "SELECT * FROM `orders` ";

switch ($_POST['criteria']) {

    case 'id':
        $sql .= "WHERE id LIKE '%" . (int) $_POST['search_input'] . "%'";
    break;
    case 'OCR':
        $sql .= "WHERE OCR LIKE '%" . $db->quote($_POST['search_input']) . "%'";
    break;
    case 'name':
        $arr = explode(' ', $_POST['search_input']);
        $firstname = $arr[0];

        if (isset($arr[1])) {
            $lastname = $arr[1];
        } else {
            $lastname = null;
        }

        $sql .= "WHERE firstname LIKE '%" . $db->quote($firstname) . "% AND lastname LIKE '%" . $db->quote($lastname) . "%'";
    break;
}

echo $sql;

$stmt = $db->query($sql);

$rows = $stmt->fetchAll();

这对ID有效,但在OCR上输出的SQL是:SELECT*FROM
orders
其中OCR类似“%”1000“%”,这给了我致命的错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取在第1行@user2141625的“1000”%”附近使用的正确语法。从错误消息中可以看出,您可能有
。。像“%”“
。从字符串中删除撇号。好吧,那是因为$db->quote(PDO),但是,我假设这会导致SQL注入问题?您已经有了注入问题。如果手动构建查询字符串,PDO没有帮助。然后您可以执行
$SQL.=“WHERE OCR喜欢”$db->quote('%.$\u POST['search\u input']“%”);
对ID有效,但在OCR上输出的SQL是:SELECT*FROM
orders
其中OCR类似“%”1000“%”,这给了我致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行@user2141625的“1000”%”附近使用的正确语法。您可以从错误消息中看到,您可能有
。例如“%”
。从字符串中删除撇号。好吧,这是因为$db->quote(PDO),但是,我认为这会导致SQL注入问题?您已经有注入问题了。如果您手工构建查询字符串,PDO没有帮助。然后您可以执行
$sql.=“WHERE OCR LIKE”$db->quote('%'.$_POST['search\u input'].%')