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()」中的範例。