使用sql更新多行

时间:2012-11-15 20:23:35

标签: php sql insert

通过一个查询,我有两个php函数。它们都应该在DB表中插入一些值。所以第一个

mysql_query("INSERT INTO images (thumb) VALUES ('$path')");

在周期中做些事。 但后来我想在其他列中添加一些值,但问题是所有的thouse值都存储在数组中。功能看起来如何。

 function uploading_paths($names_array){
    $data = '(\'' . implode('\'),(\'', $names_array) . '\')';
    mysql_query("INSERT INTO `images` (`image_path`) VALUES $data");

}

那么如何通过一个查询在已填充thumb列的行中添加$ data数组中的值? 有可能吗?

1 个答案:

答案 0 :(得分:1)

尝试使用PHP PDO。它允许您准备一个语句,然后根据需要多次执行它。例如:

$mysql_host = "127.0.0.1";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "myShop";
$dbLink = new PDO("mysql:host=$mysql_host;dbname=$mysql_database;charset=utf8", $mysql_user, $mysql_password, array(PDO::ATTR_PERSISTENT => true));
$dbLink->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$query = $dbLink->prepare("insert into `images` (`thumb`, `path`) values (?, ?);");
foreach ($names_array as $thumb => $path)
{  
    $query->execute(array($thumb, $path)); // note the order as they should appear
}

最终您可以通过以下方式替换最后一条路径:

$query = $dbLink->prepare("insert into `images` (`thumb`, `path`) values (:thumb, :path);");
foreach ($names_array as $thumb => $path)
{  
    $query->execute(array(":path" => $path, ":thumb" => $thumb)); // no order restriction
}

...而且你不必按照你拥有字段的顺序提供执行数组。

问候!