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