在单个查询中插入所有记录不起作用

时间:2017-09-19 17:52:16

标签: php prepared-statement execute mysqli-multi-query

我想知道为什么以下PHP代码不会将值插入数据库?我尝试将十个数据集插入到一个执行的表中(=单个查询中的多个行),但在执行后,该表仍为空。

<?php
include ("credentials.php");

# Create Data
$fname2 = 'J';
$lname2 = 'M';

$values = array();
for($j = 1; $j<=10; $j++) {
    $values2 = array($fname2, $lname2);
    $values = array_merge($values,$values2);

    $fname2 .= 'O';
    $lname2 .= 'A';
}

# Create SQL
$qry = 'INSERT INTO 02_Experiment (FirstName, LastName) VALUES ';
$qry .= "(?,?), ";
$qry .= "(?,?), ";
$qry .= "(?,?), ";
$qry .= "(?,?), ";
$qry .= "(?,?), ";
$qry .= "(?,?), ";
$qry .= "(?,?), ";
$qry .= "(?,?), ";
$qry .= "(?,?), ";
$qry .= "(?,?)";
echo "<b>SQL:</b> " . $qry . "<br>"; 
# This ECHO gives:
# INSERT INTO 02_Experiment (FirstName, LastName) VALUES (?,?), (?,?), (?,?), (?,?), (?,?), (?,?), (?,?), (?,?), (?,?), (?,?)


# Database insert
$stmt2 = $mysqli->prepare($qry);

echo "<h1>Examine Array Values:</h1><br>";
echo "<pre>\n"; print_r($values); echo "</pre>\n";
echo "<br>";
echo "<pre>\n"; var_dump($values); echo "</pre>\n";


# Execution
$stmt2->execute($values);

echo "End of PHP<br>";
?>

数据库表由三行组成: id(主键,int(10), FirstName(varchar(300)), LastName(varchar(300))。 PHP脚本不显示任何错误。我没有找到我的bug为什么数据库表在执行后仍然是空的。

1 个答案:

答案 0 :(得分:0)

您的语法和用法是正确的如果您正在使用PDO。 Mysqli不支持execute函数中的绑定,所以:

$stmt2->execute($values);

不正确。您需要使用bind_param或切换到PDO连接。