我在ORDER BYSQL 的部分使用params时遇到问题.它不会发出任何警告,但不打印任何内容.
$order = 'columnName';
$direction = 'ASC';
$stmt = $db->prepare("SELECT field from table WHERE column = :my_param ORDER BY :order :direction");
$stmt->bindParam(':my_param', $is_live, PDO::PARAM_STR);
$stmt->bindParam(':order', $order, PDO::PARAM_STR);
$stmt->bindParam(':direction', $direction, PDO::PARAM_STR);
$stmt->execute();
Run Code Online (Sandbox Code Playgroud)
该:my_param作品,但没有:order或:direction.是不是在内部正确转义?我是不是直接插入SQL?像这样:
$order = 'columnName';
$direction = 'ASC';
$stmt = $db->prepare("SELECT * from table WHERE column = :my_param ORDER BY $order $direction");
Run Code Online (Sandbox Code Playgroud)
是PDO::PARAM_COLUMN_NAME常数还是等价?
谢谢!
我正在使用PDO并希望做这样的事情:
$query = $dbh->prepare("SELECT * FROM :table WHERE :column = :value");
$query->bindParam(':table', $tableName);
$query->bindParam(':column', $columnName);
$query->bindParam(':value', $value);
Run Code Online (Sandbox Code Playgroud)
PDO是否允许我像这样绑定表名和列名?它似乎允许它,但即使我使用PDO :: PARAM_INT或PDO :: PARAM_BOOL作为数据类型,它也会在我的参数周围加上引号.
如果这不起作用,我怎样才能安全地转义我的变量,以便我可以在查询中插入它们?