我目前正在尝试使用 PHP 从 MYSQL 中提取数据,但我不断收到以下错误:
“无法检索记录:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在 '%PC4198% OR oem LIKE %Fluke%' 附近使用的正确语法第 1 行“
我的SQL语句如下:
$sql = "SELECT * FROM account WHERE `NSC ID` LIKE %".$nscid."% OR oem LIKE %".$oem."%";
非常感谢任何帮助。
最佳答案
你的字符串应该被引用:
$sql = "SELECT * FROM account WHERE NSC ID LIKE '%".$nscid."%' OR oem LIKE '%".$oem."%'";
也就是说,您真的应该考虑使用 PDO 或 ORM。
编辑:
正如 Bill 所说,使用 PDO 的主要目的是防止 SQL 注入(inject)(由将可能脏的字符串连接到 SQL 中引起)。
相同的查询,在 PDO 风格中,将是:
$query = $connection->prepare('SELECT * FROM account WHERE NSCID LIKE :nscid OR oem LIKE :orm');
$query->bindValue(':nscid', '%'.$nscid.'%', PDO::PARAM_STR);
$query->bindValue(':oem', '%'.$oem.'%', PDO::PARAM_STR);
它是一些更多的代码,但它会通过让库进行转义来保护您免受大多数(所有?)SQL 注入(inject)。
(bindValue 的参数类型是可选的,但这是一种很好的做法。)
关于php - 使用PHP的SQL语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895951/