使用Php PDO Insert语句

时间:2013-05-23 20:35:44

标签: php database pdo insert

有人告诉我,当你使用PDO时,不能使用“INSERT INTO .... SET”将数据插入数据库,因为它不适用于除MySQL以外的数据库。我不确定他到底意味着什么,也许他的意思是我应该使用其他插入方法,

INSERT INTO table (column1, column2) VALUES (?, ?)

我尝试在互联网上搜索这个,但我找不到任何东西。请让我知道这件事。

谢谢。

4 个答案:

答案 0 :(得分:1)

您应该使用INSERT INTO table (column1, column2) VALUES (?, ?)语句而不是INSERT INTO table SET column1=?语句,因为这是基于SQL的数据库语言的正确语法。虽然MySQL accepts it,但其他人可能不会。

答案 1 :(得分:0)

PHP PDO中的位置参数很好。另一个选项是命名参数。如果我从PDO C代码中看到的内容中记得正确,那就是PHP,而不是DBM进行替换。

http://php.net/manual/en/pdo.prepared-statements.php

答案 2 :(得分:0)

this 中所述,唯一提到的区别是,b / n mysql驱动程序和其他内容如下所述。假设这是一个简单的查询:

<?php
$stmt = $db->query('SELECT * FROM table');
$row_count = $stmt->rowCount();
echo $row_count.' rows selected';

现在,让我们看看文档如何说明/为什么该查询只有在mysql驱动程序

时才能返回affected_rows的计数?
  

注意:虽然文档说这种方法仅用于返回   来自UPDATEINSERTDELETE查询的受影响的行,使用PDO_MYSQL   驱动程序(仅限此驱动程序),您可以获取SELECT的行数   查询。在为多个数据库编写代码时请记住这一点。

     

这是因为MySQL的协议是为数不多的协议之一   有关SELECT语句的客户信息。其他大多数数据库   供应商并不打算将此信息泄露给客户端   会在实施中产生更多的开销。

因此,就我所知,存在一点差异。

答案 3 :(得分:0)

INSERT INTO ... SET语法不是ANSI SQL标准的一部分,因此不支持在不同的RDBMS实现中广泛使用。如果您正在设计应用程序,使其与MySQL紧密耦合,那么使用此语法就可以了。如果您尝试设计的应用程序与RDBMS实现没有紧密结合,那么您应该使用更标准的INSERT INTO table (columns) VALUES (values)语法。