0

我有两个 PHP/SQL 函数,我想知道如何缩小它们。我想将 3 个插入命令作为单个 $import 而不是三个运行,但我不确定如何缩小它。

$import9="INSERT into wp_postmeta (meta_id,post_id,meta_key,meta_value) values(',','$data[37]','lower_electric_costs','$data[5]')";
$import10="INSERT into wp_postmeta (meta_id,post_id,meta_key,meta_value) values(',','$data[37]','cheapest_green_electric','$data[6]')";
$import11="INSERT into wp_postmeta (meta_id,post_id,meta_key,meta_value) values(',','$data[37]','contract_type','$data[11]')";

它与我的 PRINT 结果相同——我将如何缩小它?

mysql_query($import9) or die("mysql_error()");
print $import9."<br>";
mysql_query($import10) or die("mysql_error()");
print $import10."<br>";
mysql_query($import11) or die("mysql_error()");
print $import11."<br>";

我仍在学习 PHP/SQL,我认为学习如何缩小我的代码是其中的一个重要部分。如果有人能告诉我一个缩小版本的例子,那么我可能可以从那里拿走它。

谢谢

4

1 回答 1

3

您可以将其组合成一个查询,如下所示:

$import9="
    INSERT into
        wp_postmeta
        (meta_id,post_id,meta_key,meta_value)
    values
        (',','$data[37]','lower_electric_costs','$data[5]'),
        (',','$data[37]','cheapest_green_electric','$data[6]'),
        (',','$data[37]','contract_type','$data[11]')
";

但是,您应该使用mysqli而不是mysql函数,因为mysql函数已被弃用。

mysqli_query($import9);

出于安全原因,还建议您不要使用 INSERT 查询,mysqli_query而是使用 Prepared Statements。您应该查看PDOPrepared Statements

首先,创建一个 PDO 实例。

$db = new PDO("mysql:host=localhost;port=3306;dbname=mydb", "username", "password");
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //Turn off prepared statement emulation too.

使用准备好的语句,您将向prepare服务器发送语句:

$stmt = $db->prepare("
    INSERT into
        wp_postmeta
        (meta_id,post_id,meta_key,meta_value)
    values
        (?,?,?,?)
");

使用如下数组:

$values = array(
    array(',',$data[37], 'lower_electric_costs', $data[5]),
    array(',',$data[37], 'cheapest_green_electric', $data[6]),
    array(',',$data[37], 'contract_type', $data[11]),
);

接下来,您将发出一系列执行语句:

foreach ($values as $v) {
    $stmt->execute($v);
}

最后,关闭语句,以便执行更多语句:

$stmt->closeCursor();
于 2013-01-23T20:36:10.377 回答