我有这个功能可以返回割草机的OEM数据......
public function fetch_all($oem) {
global $pdo;
$query = $pdo -> prepare("SELECT DISTINCT partnumber, cat_id FROM `oem` WHERE " . $oem . " = `oem`");
$query -> execute();
return $query -> fetchAll();
}
问题是这些OEM数据中有一些有连字符,我注意到这个OEM数据传递到函数时它会破坏它并且没有返回任何内容....
我该如何解决这个问题?
谢谢
答案 0 :(得分:1)
如果您正在使用PDO,请勿使用字符串连接来引入任意用户数据,否则您将创建危险的SQL injection bugs。使用占位符并将数组传递到execute
函数:
$query = $pdo->prepare("SELECT DISTINCT partnumber, cat_id FROM oem WHERE oem=:oem");
$query->execute(array('oem' => $oem));
Proper escaping最好采用规范的方法,尽可能将所有用户数据指定为查询中的占位符。 PDO驱动程序将根据需要进行转义。