現在、一重引用符やその他のゴミを考慮して、フォームの送信に注意を払っています。
$form_field_value= str_replace("'", "''", stripslashes($form_field_value));
次を使用して、挿入する値を準備します。
$insert_sql = "insert into table (field) values ('".$form_field_value."')";
odbc_exec($conn, $insert_sql);
基本的に、これらの挿入/更新ステートメントにはプレースホルダーを使用したいと考えています。
$par1
and$par2
をリテラルとして定義してから、これを実行してみました
$insert_sql = "insert into table (field,txt) values (?,?)";
odbc_exec($conn, $insert_sql, $par1, $par2);
それは失敗し、私にこのエラーを与えました:
警告: odbc_exec() [function.odbc-exec]: SQL エラー: [Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくないか、構文エラー、10 行目の test.php の SQLExecDirect で SQL 状態 07001
行 10 は exec ステートメントです。
この odbc ドライバーでプレースホルダーを使用するための構文が見つかりません。助言がありますか?
$conn
接続変数は正常に機能しています。
編集:
最後の試行はまだ失敗しています - odbc_execute() は未定義の関数です。odbc_exec() を使用する必要があります
$par1="eggs";
$par2="milk";
$insert_crs = "insert into table (field,txt) values (?,?)";
$stmt = odbc_prepare($conn, $insert_sql);
odbc_exec($stmt, array($par1, $par2));