SQL不会从php中获取所有传递的变量

时间:2014-10-01 00:27:47

标签: php mysql sql

我在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();

}

1 个答案:

答案 0 :(得分:1)

http://php.net/manual/en/pdo.prepare.php

  

您必须为您希望的每个值包含唯一的参数标记   调用PDOStatement :: execute()时传入语句。您   不能多次使用同名的命名参数标记   准备好的声明,除非启用仿真模式。

您需要重命名秒useriditem_label