int
mysql_stmt_prepare(MYSQL_STMT *stmt,
const char *stmt_str,
unsigned long length)
給定由 mysql_stmt_init()
傳回的語句處理器,準備由字串 stmt_str
指向的 SQL 語句,並傳回狀態值。字串長度應由 length
引數給定。字串必須包含單一 SQL 語句。您不應在語句中加入終止分號 (;
) 或 \g
。
應用程式可以在 SQL 語句中包含一個或多個參數標記,方法是在 SQL 字串的適當位置嵌入問號 (?
) 字元。
標記僅在 SQL 語句中的特定位置合法。例如,它們在 INSERT
語句的 VALUES()
清單中 (用於指定一列的欄值),或在 WHERE
子句中與欄進行比較時 (用於指定比較值) 允許。但是,它們不允許用於識別碼 (例如表格或欄名稱),或指定二元運算子 (例如等號 =
) 的兩個運算元。後者的限制是必要的,因為這樣將無法確定參數類型。一般來說,參數僅在資料操作語言 (DML) 語句中合法,而不允許在資料定義語言 (DDL) 語句中使用。
參數標記必須在使用 mysql_stmt_bind_param()
或 mysql_stmt_bind_named_param()
執行語句之前,繫結到應用程式變數。
對預備語句所參照的表格或檢視表的中繼資料變更會被偵測到,並在下次執行語句時導致自動重新準備語句。如需更多資訊,請參閱預備語句和儲存程式的快取。
-
命令以不正確的順序執行。
-
記憶體不足。
-
MySQL 伺服器已中斷連線。
-
查詢期間與伺服器的連線遺失
-
發生不明錯誤。
如果準備作業不成功 (也就是說,mysql_stmt_prepare()
傳回非零值),則可以呼叫 mysql_stmt_error()
取得錯誤訊息。
請參閱第 6.4.11 節「mysql_stmt_execute()」中的範例。