2017-05-23 172 views
-1

下面的pdo update语句不起作用,因为表名与一个变量绑定。有谁知道如何使它工作?pdo更新语句使用变量作为表名

$stmt1 = $DB_CON_C->prepare('UPDATE `".$account_list."` 
    SET property_type=:property_type; property_address=:property_address, property_city=:property_city, property_state=:property_state, property_zip=:property_zip WHERE contract_number=:order_list'); 
    $stmt1->bindParam(':account_list', $account_list, PDO::PARAM_STR); 
    $stmt1->bindParam(':order_list', $order_list, PDO::PARAM_STR); 
    $stmt1->bindParam(':property_class', $property_class, PDO::PARAM_STR); 
    $stmt1->bindParam(':property_type', $property_type, PDO::PARAM_STR); 
    $stmt1->bindParam(':property_address', $property_address, PDO::PARAM_STR); 
    $stmt1->bindParam(':property_city', $property_city, PDO::PARAM_STR); 
    $stmt1->bindParam(':property_state', $property_state, PDO::PARAM_STR); 
    $stmt1->bindParam(':property_zip', $property_zip, PDO::PARAM_STR); 
    $stmt1->execute(); 

回答

2

你将不得不用户单引号中的双代替:

$stmt1 = $DB_CON_C->prepare('UPDATE `' .$account_list. '` 
    SET property_type=:property_type; property_address=:property_address, property_city=:property_city, property_state=:property_state, property_zip=:property_zip WHERE contract_number=:order_list'); 
1

或者,只是简化,并做到:

->prepare("UPDATE {$account_list} SET... 

即,使用双引号。不需要{},但我更喜欢使用它们,因为我个人使用这个作为前缀,以实际的表名(所以("SELECT * FROM {$dbprefix}tablename")

这样你就不需要编造的查询字符串内,你不该”不需要做。只需将查询换成双引号。

+0

谢谢。这种方式似乎更好,更简单。 – ubuntujavy