6.4.22 mysql_stmt_prepare()

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_stmt_prepare() 傳回非零值),則可以呼叫 mysql_stmt_error() 取得錯誤訊息。

範例

請參閱第 6.4.11 節「mysql_stmt_execute()」中的範例。