簡體   English   中英

使用Php PDO插入語句

[英]Using Php PDO Insert statement

有人告訴我,當您使用PDO時,不能使用“ INSERT INTO .... SET”將數據插入數據庫,因為它不適用於MySQL以外的數據庫。 我不確定他到底是什么意思,也許他是說我應該使用其他插入方法,例如

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

我嘗試在互聯網上搜索此內容,但找不到任何內容。 請讓我知道這一點。

謝謝。

您應該使用INSERT INTO table (column1, column2) VALUES (?, ?)語句,而不要使用INSERT INTO table SET column1=? 語句,因為這是基於SQL的數據庫語言的正確語法。 盡管MySQL接受,但其他人可能不接受

PHP PDO中的位置參數就可以了。 另一個選項名為參數。 如果從我在PDO C代碼中看到的內容正確地記住,則是PHP而不是DBM來進行替換。

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

正如指出唯一的區別文件檔案,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語句提供此信息給客戶端的極少數協議之一。 其他大多數數據庫供應商都不會將此信息泄露給客戶端,因為這將在其實現中產生更多的開銷。

據我所知,兩者之間幾乎沒有差異。

INSERT INTO ... SET語法不是ANSI SQL標准的一部分,因此在不同的RDBMS實現中不受廣泛支持。 如果您正在設計應用程序以使其與MySQL緊密耦合,則可以使用此語法。 如果試圖設計使應用程序不與RDBMS實現緊密結合,則應使用更標准的INSERT INTO table (columns) VALUES (values)語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM