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