0

準備済みの sql 挿入ステートメント (プレースホルダー ?、? を使用) を mysql データベースに渡しています。次に、 ->execute($array) を使用して、値の単一の配列を渡します。フォームのすべてのフィールドにデータが入力されている場合 (つまり、挿入) はうまく機能しますが (配列は完全です)、完全に失敗します1 つの要素だけが完成していない場合。

古い mysql_query では、値が欠落している場合、その値がデータベースに挿入されませんでした。

準備されたステートメントでこれをどのように処理しますか?

ありがとう!

4

2 に答える 2

0

それに対処する方法は、クエリに関連するすべての値を適切に入力したことを確認することです。mysql_query() は、最終的には MySQL をサポートするだけでよいため、好きなだけ緩いものにすることができますが、PDO はリレーショナル データ ストレージの汎用インターフェイスであり、すべてを入力したことを確認する作業は必要ありません。あなたのデータ。

于 2012-04-21T22:43:22.570 に答える
0

mysql_query はパラメーターを取らないため、比較が表示されませんか?

PDO オブジェクトでは、要素をパラメーターにバインドする必要があります。これは長い道のりです:

$stmt->bindParam(":namedParam", 1, PDO::PARAM_INT);

これは省略形であるため、内部的に PDO は上記を実行し、それ自体に追加の作業を行う必要があります。

$stmt->execute(array($value1, $value2, $etc));

クエリが次のようになっている場合:

INSET INTO mytbl VALUES (?, ?, ?, ?, ?)

$data 配列は次のようになります。

$data = array($val1, $val2, $val3);

NULL2 つの値をどこに挿入する必要があると思いますか?
1位と3位??PDOはそれをどのように知る必要がありますか?

さらに、その質問に対する答えがわかっている場合でも、PHP で処理できます。

function queryMyTable($val1, $val2, $val3, $val4 = null, $val5 = null) {
    ...
    $stmt->execute(array($val1, $val2, $val3, $val4, $val5));
}
于 2012-05-05T15:17:48.953 に答える