使用PHP的SQL语句问题

0 php mysql

我目前正在尝试使用PHP从MYSQL中提取数据,并且我不断收到以下错误:

"无法检索记录:您的SQL语法中有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行'%PC4198%或oem LIKE%Fluke%'附近使用正确的语法"

我的SQL语句如下:

$sql = "SELECT * FROM account WHERE `NSC ID` LIKE %".$nscid."% OR oem LIKE %".$oem."%";
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏.

Tor*_*dek 10

你的字符串应该引用:

$sql = "SELECT * FROM account WHERE NSC ID LIKE '%".$nscid."%' OR oem LIKE '%".$oem."%'";
Run Code Online (Sandbox Code Playgroud)

也就是说,你应该考虑使用PDO或ORM.

编辑:

正如Bill所说,使用PDO的主要目的是防止SQL注入(由可能脏的字符串连接到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);
Run Code Online (Sandbox Code Playgroud)

这是一些更多的代码,但是通过让库进行转义,它可以保护你免受大多数(所有?)SQL注入的影响.

(bindValue的参数类型是可选的,但是很好的做法.)