我在php函数中有这些sql语句,并且我已经传递了所有需要的变量。我在查询中有2个插入语句。他们将数据插入到同一个表中,第一个插入用于主服务,第二个插入用于我的网站中的附加服务。
SQL以某种方式获取$ userid和$ item_label的值,第一个插入工作正常。第二个插件无法工作,除非我将$ userid和$ item_label更改为静态值,例如' 123' 122'。 (基本上,如果我将它们保留为:userid
,:item_label
,则SQL不会将值插入表中)
但是其他重叠变量如$filename
,所使用的insert语句都不会引起任何问题。
并且$userid
不是目标表格的索引或任何内容。所以,请帮忙。这是代码
function add_writing_editing_to_table($userid, $item_label, $basic_writing_service_id, $basic_writing_price, $editing_service_subcategory, $editing_service_id, $editing_serivce_price, $filename, $new_filename){
global $db;
$query = "INSERT INTO op_cart
(service_category, userid, item_label, service_subcategory, service_id, is_addon, unit, total_price, filename, new_filename, checkout)
VALUES
('writing', :userid, :item_label, 'basic_writing', :basic_writing_service_id, '0', '1', :basic_writing_price, :filename, :new_filename, '0'),
('editing', :userid, :item_label, :editing_service_subcategory, :editing_service_id, '1', '1', :editing_serivce_price, :filename, :new_filename, '0');";
$statement = $db->prepare($query);
$statement->bindValue(':userid', $userid);
$statement->bindValue(':item_label', $item_label);
$statement->bindValue(':basic_writing_service_id', $basic_writing_service_id);
$statement->bindValue(':basic_writing_price', $basic_writing_price);
$statement->bindValue(':filename', $filename);
$statement->bindValue(':new_filename', $new_filename);
$statement->bindValue(':editing_service_subcategory', $editing_service_subcategory);
$statement->bindValue(':editing_service_id', $editing_service_id);
$statement->bindValue(':editing_serivce_price', $editing_serivce_price);
$statement->execute();
$statement->closeCursor();
}
答案 0 :(得分:1)
http://php.net/manual/en/pdo.prepare.php
您必须为您希望的每个值包含唯一的参数标记 调用PDOStatement :: execute()时传入语句。您 不能多次使用同名的命名参数标记 准备好的声明,除非启用仿真模式。
您需要重命名秒userid
和item_label