2012-04-21 18 views
0

mysqlデータベースにプレースホルダ?、?を使用して、準備済みのSQL挿入文を渡します。私は - > execute($ array)を使用して、値の単一の配列を渡しています。フォームの各フィールドに入力されたデータが(配列が完成しています)、ただ1つの要素が完成していない場合PHP Prepared Statement Fail

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

これをプリペアドステートメントでどのように処理しますか?

ありがとうございます!

+1

は単に無視/エラーを沈黙しました。 – ThiefMaster

+2

PDO/mysqliは、提供しないと魔法のようにデータを生成することはできません。関連するDBフィールドが 'ヌルでない'かどうか –

答えて

0

あなたがそれを処理する方法は、クエリに関連するすべての値を適切に入力することです。 mysql_query()は、一日の終わりにMySQLをサポートするだけで済みますが、PDOはリレーショナルデータストレージの一般的なインターフェイスであり、すべてを入力したことを確認する作業を行わないため、あなたのデータ。

0

mysql_queryでパラメータが取られないため、比較が表示されません。

PDOオブジェクトでは、要素をパラメータにバインドする必要があります。これは長い方法です:あなたのクエリは次のようになります場合は

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

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

これには、内部的にPDOが、まだ自分自身のためにいくつかの余分な作業で上記を行う必要があり、短い手で

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

とあなたの$ data配列のようになります。

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

2つのNULL値はどこに挿入されるべきだと思いますか?
第1 &第3 ? 's? PDOはそれをどのように知るべきですか?

あなたがその質問への答えを知っている場合はさらに、あなたはまだPHPでそれを処理することができます:あなたは、単にバグを処理し、適切なエラーを持っていなかった前に、それが働いた場合

function queryMyTable($val1, $val2, $val3, $val4 = null, $val5 = null) { 
    ... 
    $stmt->execute(array($val1, $val2, $val3, $val4, $val5)); 
} 
関連する問題