mysqli multi запрос не работает - PullRequest
0 голосов
/ 07 декабря 2011

Это первый раз, когда я использую mysqli для выполнения ряда запросов вместо одного за другим в цикле. Существует множество флажков, из которых я выбираю количество продуктов, которые будут перечислены в качестве предложений, а затем мне нужно вставить их идентификаторы в таблицу. Это мой код, который ничего не выводит, чтобы указать на успех / неудачу выполнения:

$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 ]

1 голос
/ 16 января 2012

Если вы не ссылаетесь на ошибку подключения через $ 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());
}
?>
0 голосов
/ 08 февраля 2015

Я знаю, что это старый пост, но мне не нравятся свободные концы ...

Если соединение хорошее:

1.) Если в вашем запросе есть синтаксическая ошибка, вам нужно будет использовать mysqli_error($mysqli) после завершения multi_query().

2.) Если ваши запросы являются чисто INSERT, то они никогда не будут предлагать набор результатов для вас printf. Пострадавшие строки будут мерой успеха.

Любой, кто хочет получить от флипа фрагмент кода, может воспользоваться этим: Строгие стандарты: mysqli_next_result () ошибка с mysqli_multi_query

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...