相关疑难解决方法(0)

PHP PDO语句可以接受表名或列名作为参数吗?

为什么我不能将表名传递给准备好的PDO语句?

$stmt = $dbh->prepare('SELECT * FROM :table WHERE 1');
if ($stmt->execute(array(':table' => 'users'))) {
    var_dump($stmt->fetchAll());
}
Run Code Online (Sandbox Code Playgroud)

是否有另一种安全的方法将表名插入SQL查询?安全我的意思是我不想这样做

$sql = "SELECT * FROM $table WHERE 1"
Run Code Online (Sandbox Code Playgroud)

php pdo

232
推荐指数
5
解决办法
7万
查看次数

如何使用准备好的PDO语句设置ORDER BY参数?

我在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常数还是等价?

谢谢!

php mysql pdo

33
推荐指数
4
解决办法
5万
查看次数

如何使用PDO动态构建查询

我正在使用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作为数据类型,它也会在我的参数周围加上引号.

如果这不起作用,我怎样才能安全地转义我的变量,以便我可以在查询中插入它们?

php pdo

9
推荐指数
1
解决办法
7019
查看次数

标签 统计

pdo ×3

php ×3

mysql ×1