如何通过id sql为行添加值

时间:2017-03-11 20:32:45

标签: php sql

我有两个带ID和说明的数组。

在数据库中,我有相同的ID,但没有说明。

如何将每个描述表单数组添加到当前ID?

这是full code

foreach($product->find('.block-d .btns-d .btn-buy') as $productId) {
    if(!empty($productId)) {
        dataId = $productId->{'data-offerid'};
    }
}

foreach($product->find('.description div div p') as $description) {
    if(!empty($description)) {
        $query = "UPDATE snowcore_parser_products SET description = " . $description . " WHERE remote_id = " . $dataId . " ';";
        $sql = mysqli_query($db, $query);
    }
}

如果我尝试使用没有数组的简单值,它就可以工作。例如

$query = "UPDATE snowcore_parser_products SET description = '1';";

2 个答案:

答案 0 :(得分:1)

只需使用foreach就可以了,试试这个:

$ids = [1,2,3];
$descriptions = [1,2,3];
foreach($ids as $key => $id) {
    $query = "UPDATE snowcore_parser_products SET description = " . $descriptions[$key] . " WHERE remote_id = " . $id . " ';";
    $sql = mysqli_query($db, $query);
}

答案 1 :(得分:1)

我认为您的查询格式不正确。它没有引用说明,以表明它是一个字符串。例如,如果描述的值是" stackoverflow"并且ID为" 1",您的查询将如下所示:

UPDATE snowcore_parser_products SET description = stackoverflow WHERE remote_id = 1 ';

因此,为了解决这个问题,最后一个引用应该消失,描述的值应该用引号括起来。像这样:

$query = "UPDATE snowcore_parser_products SET description = '" . $description . "' WHERE remote_id = " . $dataId . ";

另外,我建议您阅读this article on SQL injection,因为此查询并非安全。