【发布时间】:2018-02-28 14:52:42
【问题描述】:
我想知道为什么下面的 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), 名字(varchar(300)), 姓 (varchar(300))。 PHP 脚本没有显示任何错误。我没有找到为什么执行后数据库表仍然为空的错误。
【问题讨论】:
-
您应该阅读一些 SQL 和准备好的语句教程。这不是准备好的语句的正确格式。
-
MySQL 查询静默失败。您需要检查mysqli_errors
-
if(!$stmt2->execute($values)){ echo "Error: " . mysqli_error($mysqli); } else { echo "Success!"; }- 当您将其替换为$stmt2->execute($values);时会显示什么? -
很好 @chris85 并想知道他们使用哪个 API 来连接。那么彼得,您使用哪一个 连接?
-
@chris85: 将我的数据库连接更改为 PDO 并调整 PHP 后,INSERT 完美运行!
标签: php prepared-statement execute mysqli-multi-query