簡體   English   中英

PHP准備的語句失敗

[英]PHP Prepared Statement Fails

我正在將准備好的sql插入語句(使用占位符?,?)傳遞到mysql數據庫中。 然后,我使用-> execute($ array)並傳遞單個值數組。當在表單的每個字段中輸入數據(數組已完成)時,它的工作效果很好(即插入),但是完全失敗如果只有一個元素沒有完成。

使用較舊的mysql_query,如果缺少一個值,則不會將該值插入數據庫中。

我們如何在准備好的聲明中處理這個問題?

謝謝!

它們處理它們的方式是正確地確保您為查詢輸入了所有相關值。 mysql_query()可以隨心所欲,因為在一天結束時,它只必須支持MySQL,但是PDO是關系數據存儲的通用接口,它不會確保輸入全部內容。您的數據。

我沒有看到比較,因為mysql_query不接受參數?

PDO對象要求您將元素綁定到參數。 這是很長的路要走:

$stmt->bindParam(":namedParam", 1, PDO::PARAM_INT);

這是捷徑,因此內部PDO仍應自行完成上述工作:

$stmt->execute(array($value1, $value2, $etc));

如果您的查詢如下所示:

INSET INTO mytbl VALUES (?, ?, ?, ?, ?)

您的$ data數組如下所示:

$data = array($val1, $val2, $val3);

您認為應該在哪里插入兩個NULL值?
第一和第三? 的? PDO應該如何知道呢?

此外,如果您確實知道該問題的答案,則仍然可以使用PHP進行處理:

function queryMyTable($val1, $val2, $val3, $val4 = null, $val5 = null) {
    ...
    $stmt->execute(array($val1, $val2, $val3, $val4, $val5));
}

暫無
暫無

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

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