MySQLi PHP: проверьте, был ли SQL INSERT-запрос полностью успешным с использованием MySQLi - PullRequest
5 голосов
/ 20 мая 2010

У меня есть эта большая функция, которая получает много разных данных и вставляет их в несколько таблиц. Не все данные всегда доступны, поэтому не все запросы SQL INSERT успешны. Мне нужно проверить, какой запрос SQL INSERT был полностью успешным, а какой - что-то не делать с этими данными (например, вставка в таблицу журналов или подобное).

Просто чтобы дать вам пример того, как я думаю, что это может быть сделано:

$sql = 'INSERT INTO data_table (ID, column1, column2) VALUES(?, ?, ?)';

if ($stmt->prepare($sql)) {
    $stmt->bind_param('iss', $varID, $var1, $var2);

    if ($stmt->execute()) {
        $success == TRUE;   //or something like that
    }
}

Я не совсем уверен, что это лучший способ, и всегда ли он действительно показывает, были ли данные вставлены в таблицу ... Любые предложения ??

Ответы [ 2 ]

13 голосов
/ 20 мая 2010

Из руководства по PHP на mysqli_stmt::execute:

mysqli_stmt::execute - mysqli_stmt_execute - Выполняет подготовленный запрос

Возвращает TRUE в случае успеха или FALSE в случае отказ.


if ($stmt->execute()) { // exactly like this!
    $success = true;
}

Вы делаете это правильно ... Какая у вас дилемма?

3 голосов
/ 20 мая 2010

Я полагаю, что вы можете использовать mysqli_stmt->affected_rows, чтобы вернуть количество вставленных (или измененных или удаленных) строк.

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