在php(mysql)中转义连字符

时间:2014-06-26 22:30:40

标签: php mysql

我有这个功能可以返回割草机的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数据传递到函数时它会破坏它并且没有返回任何内容....

我该如何解决这个问题?

谢谢

1 个答案:

答案 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驱动程序将根据需要进行转义。