插入PDO

时间:2016-01-12 20:44:27

标签: php pdo

我在这里使用PDO进行INSERT。它似乎不起作用......

$sql = "INSERT INTO client_cards 
        SET cc_num = ?,     
        cc_cvv = ?, 
        cc_month = ?, 
        cc_year = ?,
        cfname = ?,
        clname = ?,
        caddress = ?,
        ccity = ?,
        cstate = ?,
        ccountry = '212',
        czip = ?,
        `default` = ? , 
        client_id = ?";

  $query = $db->prepare($sql);
  $array = array($enc_cc_num, $enc_cc_ccv, $exp_month, $exp_year, $fname, $lname, $address, $city, $state, $zip, $set_default, $client_id);
  $query->execute(array($array));

PDO是否仅适用于INSERT INTO表(键,键,键) VALUES ($ value,$ value,$ value),  但不能使用INSERT INTO表 SET key = $ value ??

2 个答案:

答案 0 :(得分:4)

您需要为execute()方法提供一组值。相反,你只给它一个值;一个数组:

$array = array($enc_cc_num, $enc_cc_ccv, $exp_month, $exp_year, $fname, $lname, $address, $city, $state, $zip, $set_default, $client_id);
  $query->execute(array($array));

您只需要:

$array = array($enc_cc_num, $enc_cc_ccv, $exp_month, $exp_year, $fname, $lname, $address, $city, $state, $zip, $set_default, $client_id);
  $query->execute($array);
                  ^^^^^^ here

当您打开数据库连接时,应该告诉PDO在出现问题时抛出异常,以便您可以轻松捕获这些错误。

例如:

    $opt = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);
    $db = new PDO($dsn, $user, $password, $opt);

答案 1 :(得分:0)

我们这里的错误是插入查询的语法,因为SET在UPDATE查询中使用而不是在INSERT中,我们的查询将是这样的: 插入

准备好的陈述基本上是这样的:

INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
  • 准备:创建SQL语句模板并将其发送到数据库。某些值未指定,称为参数(标记为“?”)。示例:INSERT INTO MyGuests VALUES(?,?,?)
  • 我们需要将值绑定到查询,然后数据库在SQL语句模板上解析,编译和执行查询优化,并存储结果而不执行它
  • 执行:稍后,应用程序将值绑定到参数,数据库执行该语句。应用程序可以根据需要使用不同的值执行语句

我们也可以在这里得到一些基本的教师http://www.w3schools.com/php/php_mysql_prepared_statements.asp