带有变量和字符串连接的PDO查询作为表名

时间:2014-12-27 22:49:04

标签: php mysql pdo concatenation

我有这个查询

$prefix = 'de_';
    $sql = "INSERT INTO $prefix.request_products (created_at, request_id) VALUES (NOW(), :request_id)";

哪个可行,但php或PDO(或两者)都在查询中写入点,表名为de_request_products,但查询构建为de_.request_products

如果我只是在$ prefix和字符串之间使用空格,PDO会抛出错误。

还有其他可能性如何在查询中连接字符串和变量,或者是这样构建它的唯一方法:

$prefix = 'de_';
$table = 'request_products';
$concat = $prefix.$table;
$sql = INSERT INTO $concat ...

2 个答案:

答案 0 :(得分:1)

使用${variable}语法:

$sql = "INSERT INTO ${prefix}request_products (created_at, request_id) VALUES (NOW(), :request_id)";

答案 1 :(得分:1)

此手册:http://php.net/manual/pl/language.types.string.php 说:“将变量名括在大括号中,以明确指定名称的结尾。” 所以这应该让你开心:

$prefix = 'de_';
$sql = "INSERT INTO ${prefix}request_products (created_at, request_id) VALUES (NOW(), :request_id)";