我在學習如何在MySQLi中使用預準備語句來插入數據。如果在循環中使用MySQLi準備語句,何時調用bind_param?
即使準備好的語句因重複執行類似語句的能力而備受讚譽,我似乎無法找到使用MySQLi在循環中執行多個語句的示例。我特別困惑以下:
- 是否我的循環之前或我的循環
- 是否之前或調用
bind_param
bind_param
關於準備語句的大多數教程都使用PDO。通過PDO,可將一組參數值傳遞給execute
,無需致電bindParam
。 MySQLi並非如此。
PHP手冊mysqli_prepare
條目具有一個顯示以下的操作順序的一個示例:
- 給變量賦值
- 準備聲明
- 綁定變量
- 執行
- 靠近
通過上面的判斷,我假定我需要在我的循環中調用綁定語句。
然而,PHP手冊mysqli_stmt_execute
條目具有一個顯示以下的操作順序的一個示例:
- 準備聲明
- 綁定變量
- 給變量賦值
- 執行
- 分配變量值
- 執行
- close
請注意,此示例沒有顯示的一點是首先聲明變量的位置。我認爲將未聲明的變量傳遞給bind_param
會生成通知。我終於明白,我可以傳遞未定義的變量,因爲它們是通過引用傳遞的。
問題:
一個操作順序是否比其他操作順序更優先?還是僅僅取決於你在做什麼?是否有任何與其中一個陷阱?
說明:代碼已經使用MySQLi,我不想切換到PDO(現在切換不在此項目範圍內)。
你在循環什麼?你可以在你的循環中調用'bind_param'然後'執行'。我不完全理解我猜的問題。 –
你應該在*'bind_param'前明確設置你的變量*。這將使它更容易調試。 –
我的困惑源於被'傳遞*價值*'的思維所困擾。我一直在想,在改變數值之後,我應該重新綁定它們。 – toxalot