【发布时间】:2017-03-29 22:05:05
【问题描述】:
不能use parameters to describe column or table names in PDO。
例如:
CREATE TABLE ? (id INT(6) PRIMARY KEY AUTO_INCREMENT, ...)
如何使用临时表处理恶意数据,然后将其反馈到语句中?
$hex = bin2hex(random_bytes(8));
$stmt = $db->prepare('INSERT INTO tmpdata (value,hex) VALUES (:val,:hex)');
$stmt->execute(array(
":val" => $_POST['catname'],
":hex" => $hex
));
$stmt = $db->prepare('SELECT value FROM tmpdata WHERE hex=?');
$stmt->execute(array($hex));
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
$cleaned_value = $row[0]['value'];
这是一种可接受且更重要的是安全的方式将参数输入 PDO 以获取列名和表名吗?
【问题讨论】: