2017-07-19 12 views
0

プリペアドステートメントを使用すると、23個の値が入力されます(下記参照)。これは23をタイプアウトする必要があるのですか?プレースメントやデフォルト/短縮形がありますか?PHPプリペアドステートメントの複数の値

INSERT INTO table 
      (
      job_id, property_title, property_location, property_price, number_of_bedrooms, 
      number_of_receptions, number_of_bathrooms, epc, train_station_miles, 
      garden_acres, garage, off_road_parking, main_photo, 
      photo_1, photo_2, return_email, office, 
      additional_information, timestamp_added, added_by_user_id, timestamp_updated, 
      updated_by_user_id, status_id 
      ) 
      VALUES (?, ?, ?, ?,......etc x 23) 

、私は唯一の値の小さい数を使用していたように私は前にこのことについて考えたことはありませんが、23は、速記

+1

を、あなたはそれはあなたが持っている場合は、23個のパラメーターをバインドする必要が – RiggsFolly

+0

持つパラメータの数である場合には23個のパラメーターをバインドする必要があります23パラメータ。 – Bhavin

+0

混乱している場合は、名前付きパラメータを使用できます。ドキュメントを確認してください:http://php.net/manual/en/pdo.prepare.php –

答えて

2

のいくつかの種類がある場合、これはあなたのために適したものでなければならないビット過度のようです私はこのコードをお勧めします、クエリにあなたのすべての入力を結合速記する:もちろん

$placeholders = implode(', ', array_fill(0, 23, '?')); 

$stmt = $connection->prepare("INSERT INTO table 
      (
      ... rest of the statement.... 
      ) 
      VALUES ($placeholders)"); 
+0

@Dan問題はありません。ユーザー入力を含む変数を決して 'prepare'ステートメントに入れないことを覚えておいてください。長い$ SQLステートメントを短縮するような' $ placeholders'のようなハードコードされた変数だけが例外の1つです。 – MinistryofChaps

関連する問題