-4

SQL:

$sql = $db->prepare('SELECT * FROM product_detail WHERE size = $order_size AND product_id = $order_detail_product_id');

コード:

$order_detail_product_id = $_POST['order']['product_id'];
$order_size = $_POST['order']['size'];

html:

<?php foreach ($it as $e) { >?
      <input type="text" name="order[product_id][]" value="<?php echo  $e[0]; ?>">
      <input type="text" name="order[size][]" value="<?php echo  $e[3]; ?>">
<?php } ?>

なぜそれが機能しないのですか。エラーは配列から文字列への変換です

4

1 に答える 1

-1

そのような変数を、prepare ステートメントの一重引用符内で使用することはできません (意味を成すには二重引用符が必要ですが、配列を使用しているため、それはかなり悪く、意味を成しません。文字列として)、また、準備する文字列内に値を入れることは、準備の目的に反するため、次のようにする必要があります。

foreach ($order_size as $key => $size):
$stmt = $db->prepare('SELECT * FROM product_detail WHERE size = ? AND product_id = ?');
$stmt->bindParam(1, $size);
$stmt->bindParam(2, $order_detail_product_id[$key]);
...
endforeach;

または、投稿したものから推測するのは簡単ではない、必要なものに応じて別のクエリ。

mysqliではなくpdoを使用していると仮定します(これはひどいでしょう)。

于 2012-11-17T00:11:24.093 に答える