PHP MySQL插入数组语法

时间:2015-09-08 11:03:49

标签: php mysql arrays implode

我有一个输入2个值的表单: sku filter_id 。然后我接受sku并从DB中检索与 sku 对应的 product_id 数组。对于每个product_id,我需要将带有2个值的查询插回到DB中: product_id filter_id

我想在foreach循环中构建查询,并在最后运行单个SQL查询以有效地使用资源。

这是我的PHP代码:

// Escape user inputs for security
$sku = mysqli_real_escape_string($db, $_POST['sku']);
$filter_id = mysqli_real_escape_string($db, $_POST['filter_id']);

// Check connection
if ($db->connect_error) {
    die("Connection failed: " . $db->connect_error);
} 

//get product_id array for requested sku
$sql = "SELECT product_id FROM oc_product WHERE sku = '$sku'";
$product_id_array = $db->query($sql);

if ($product_id_array->num_rows > 0) {
    foreach( $product_id_array as $row ) {
    $query_row[] = "('$row['product_id']','$filter_id')";
    }

    $final_query = "INSERT IGNORE INTO oc_product_filter (product_id, filter_id) VALUES " .implode(',', $query_row);
    $db->query($final_query);
} else {
    echo "no products found.";
}

当前错误是:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

这就是这一行:$query_row[] = "('$row['product_id']','$filter_id')";

任何人都可以帮我使用正确的语法吗? 谢谢!

2 个答案:

答案 0 :(得分:2)

更新您的代码

$query_row[] = "('$row['product_id']','$filter_id')";
                 ^^                 ^^

$query_row[] = "('{$row['product_id']}','$filter_id')";
                 ^^                  ^^

您需要将数组变量括在{}

答案 1 :(得分:0)

改变
$query_row[] = "('$row['product_id']','$filter_id')";

 $query_row[] = "('".$row['product_id']."','".$filter_id."')";