这是我第一次使用mysqli在循环中执行多个查询而不是逐个查询。 有一系列复选框,我从中选择要列出的产品数量,然后我需要将他们的ID插入表中。这是我的代码,它完全没有输出来表示执行成功/失败:
$n=count($offervals);
for($i=0; $i<count($_POST['offer']); $i++)
{
if (!($offervals[$i]==null)) {
$query_offers .= "insert into productoffers (productcode) VALUES ('".$offervals[$i]."');";
}
}
$mysqli = new mysqli($hostname_connection, $username_connection, $password_connection);
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* execute multi query */
if ($mysqli->multi_query($query_offers)) {
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();
有什么建议吗?这让我在圈子里呆了2个小时...... :(
答案 0 :(得分:1)
您不应该通过$mysqli->connect_error
引用连接错误if ($mysqli->connect_error) {
die('Connect Error: ' . $mysqli->connect_error);
}
程序风格将是
<?php
$link = @mysqli_connect('localhost', 'fake_user', 'my_password', 'my_db');
if (!$link) {
die('Connect Error: ' . mysqli_connect_error());
}
?>
答案 1 :(得分:0)
我知道这是一个老帖子,但我不喜欢松散的目的......
假设连接良好:
1。)如果您的查询中存在语法错误,则需要在mysqli_error($mysqli)
完成后使用multi_query()
。
2。)如果你的查询纯粹是INSERT,那么他们永远不会为你提供printf的结果集。受影响的行将成为衡量成功的标准。
任何想要用勺子喂一个片段的人都可以享受这个:Strict Standards: mysqli_next_result() error with mysqli_multi_query