已编辑:以下工作代码!
//* opens a connection to a MySQL server */
$mysqli = new mysqli($host, $username, $password, $database);
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222');";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444');";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing5555','testing66666');";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing77777','testing888888');";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing99999','testing101010');";
if ($mysqli->multi_query($query)) {
do {
/* store first result set */
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
//printf("%s\n", $row[0]);
}
$result->free();
}
/* print divider */
//if ($mysqli->more_results()) {
// printf("-----------------\n");
//}
} while ($mysqli->next_result());
}
/* close connection */
$mysqli->close();
下面的坏代码:
我已经尽可能地尝试了这一点,但我似乎无法让它发挥作用。我注意到只有当我有一个$ query要输入时,一个变体才会起作用。如果它有多个,它就会失败。
//* opens a connection to a MySQL server */
$mysqli = mysql_connect($host,$username,$password, $database);
$query = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222')";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444')";
if($mysqli->multi_query($query))
{
do
{
if($result=$mysqli->store_result())
{
while($row=$result->fetch_row())
{
printf("%s<br/>",$row[0]);
}
$result->free();
}
if($mysqli->more_results())
{
print("-------------------------------<br/>");
}
else
{
echo '<br/>';
}
}while($mysqli->more_results() && $mysqli->next_result());
}
它建立了连接,我只修剪了一些代码,以便更容易理解。表存在等等......也逐字逐句地尝试了主要的例子,但它似乎没有用。我哪里错了?
答案 0 :(得分:1)
您必须在每个语句的末尾添加;
。还要经常检查错误$mysqli->error
。
现在您的查询看起来与此完全相同
INSERT INTO `test` (test1, test2) VALUES('testing','testing2222')INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444')
这是不正确的。
答案 1 :(得分:0)
每个查询结尾都需要一个分号。 MySQL正在等待语句的结束。请参阅MySQL文档中的以下内容:
不需要在一行上给出所有命令,因此需要多行的冗长命令不是问题。 mysql通过查找终止分号来确定语句的结束位置,而不是查找输入行的结尾。 (换句话说,mysql接受自由格式输入:它收集输入行但在看到分号之前不执行它们。)
改变这个:
$query = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222')";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444')";
到此:
$query = "INSERT INTO `test` (test1, test2) VALUES('testing','testing2222');";
$query .= "INSERT INTO `test` (test1, test2) VALUES('testing3333','testing44444');";