我有这个函数返回割草机的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数据被传递到函数时,它会破坏它并且没有返回任何东西....
如何解决这个问题?
谢谢
如果您正在使用PDO, 不要使用字符串连接来引入任意用户数据,否则您将创建危险的SQL注入错误。使用占位符并将一个数组传递给execute
函数:
$query = $pdo->prepare("SELECT DISTINCT partnumber, cat_id FROM oem WHERE oem=:oem");
$query->execute(array('oem' => $oem));
适当的转义最好使用一种有纪律的方法,尽可能将查询中的所有用户数据指定为占位符。PDO驱动程序将在必要时对其进行转义。