mysqli多查询无法正常工作

时间:2011-12-07 15:24:24

标签: mysqli

这是我第一次使用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个小时...... :(

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