有人告诉我,当你使用PDO时,不能使用“INSERT INTO .... SET”将数据插入数据库,因为它不适用于除MySQL以外的数据库。我不确定他到底意味着什么,也许他的意思是我应该使用其他插入方法,
INSERT INTO table (column1, column2) VALUES (?, ?)
我尝试在互联网上搜索这个,但我找不到任何东西。请让我知道这件事。
谢谢。
答案 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进行替换。
答案 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
的计数?
注意:虽然文档说这种方法仅用于返回 来自
UPDATE
,INSERT
,DELETE
查询的受影响的行,使用PDO_MYSQL 驱动程序(仅限此驱动程序),您可以获取SELECT
的行数 查询。在为多个数据库编写代码时请记住这一点。这是因为MySQL的协议是为数不多的协议之一 有关
SELECT
语句的客户信息。其他大多数数据库 供应商并不打算将此信息泄露给客户端 会在实施中产生更多的开销。
因此,就我所知,存在一点差异。
答案 3 :(得分:0)
INSERT INTO ... SET
语法不是ANSI SQL标准的一部分,因此不支持在不同的RDBMS实现中广泛使用。如果您正在设计应用程序,使其与MySQL紧密耦合,那么使用此语法就可以了。如果您尝试设计的应用程序与RDBMS实现没有紧密结合,那么您应该使用更标准的INSERT INTO table (columns) VALUES (values)
语法。