2014-01-13 103 views
1

我使用PHP msqli建立了一個包含數據庫連接和查詢的網站。Mysqli或PDO?準備好的陳述。客戶端準備的語句

現在我正在認識準備好的陳述是最佳實踐,我正在尋找如何實施它們;以PDO格式重新編寫mysqli數據庫連接代碼和數據庫查詢,或者只使用mysqli預處理語句。

  1. 我從服務器端預處理語句通過mysqli的支持,但不是客戶端預處理語句的PHP API文檔看。什麼時候客戶端準備好的聲明被使用?我明白準備語句的唯一目的是查詢數據庫,因此服務器端語言總是會涉及到的,因此總是可以使用服務器端準備好的語句。

  2. 它從下面的鏈接看起來像下面的準備語句可以用我的mysqli連接。

http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

if (!($stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)"))) { 
    echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error; 
    } 

當我看到PDO文檔:ID樣式佔位符使用,而隨後的?下面可以使用mysqli連接嗎?除了讓事情更容易閱讀,還有什麼好處?

$stmt = $conn->prepare('SELECT * FROM myTable WHERE id = :id'); 
    $stmt->execute(array('id' => $id)); 

我是不是應該忘記mysqli,只是爲了加快PDO的速度?

任何指導將不勝感激。看看如何解決這個問題。

+0

PDO也可以使用'?'索引佔位符。它提供了一個更簡單的API來綁定值。 – mario

+0

因此,如果我使用mysqli進行數據庫連接,則無法使用PDO綁定語法? – DVCITIS

+1

是的,你不能。不要使用mysqli,除非你需要它提供的一個mysql特定的附加功能(你不需要)。其他人都在聚合PDO。 – mario

回答

3

這裏有幾個問題。這是我的簡短答案。

  • 如果你是使用 MySQL數據庫
  • 使用PDO如果你想支持更多的數據庫使用msqli(SQL服務器,Oracle等)

使用哪種你喜歡,他們都會以相同的方式爲你服務,當涉及到mysql數據庫

現在,您可以看到PDO具有明顯的優勢,因爲您可以使用相同的代碼與不同的數據庫交談。