-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

您不能在准备语句中的单引号内使用类似的变量(您需要双引号才能使其有意义,但这仍然很糟糕并且仍然没有意义,因为您使用的是数组作为一个字符串),并且将值放在您准备的字符串中比准备的目的,您应该这样做:

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;

或者不同的查询,这取决于你想要什么,你发布的内容不容易猜到。

假设您使用的是 pdo 而不是 mysqli (这会很糟糕)。

于 2012-11-17T00:11:24.093 回答