Как я могу изменить этот код, чтобы показать, почему вставка не удалась? PHP, MySQLi, подготовленные заявления - PullRequest
1 голос
/ 06 декабря 2011

Я застрял в этой проблеме, и все примеры ошибок используют $ stmt-> error или что-то, чего я не понимаю. Я пишу в процедурном стиле не ООП. Моя вставка не удалась, поэтому мне интересно ее отладить, пожалуйста ...

    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_USER_PASSWORD, DB_NAME) or die(DB_CONNECT_ERROR);
    if (!$stmt = mysqli_prepare($dbc, $query)) die('SEL:mysqli_prepare');
    call_user_func_array('mysqli_stmt_bind_param', array_merge(array($stmt, 'sssssssssssssssssssssbsssss')), $idb);
    mysqli_stmt_execute($stmt);

    if (!mysqli_stmt_affected_rows($stmt)) {
            // Failed to insert
    } else {
            // Success
            }

Моя вставка не удалась ... как узнать причину? Пожалуйста и заранее спасибо! Я также только изучаю подготовленные операторы, поэтому, если я сделал что-то не так, пожалуйста, сообщите ... Код сводится к строке // FAILED TO INSERT, и при проверке cpanel запрос не удался (в БД ничего не было).

Если вы хотите написать свой собственный пример, используя стиль программирования, который я использовал выше, и показать мне, как проверить, не удалось ли вставить, это тоже круто. Как только я увижу, как ты это делаешь, я могу изменить свой код :)

Ответы [ 2 ]

9 голосов
/ 06 декабря 2011

Используйте mysqli_stmt_error() и mysqli_stmt_errno() для получения информации об ошибке:

mysqli_stmt_execute($stmt);

printf("Error #%d: %s.\n", mysqli_stmt_errno($stmt), mysqli_stmt_error($stmt));

Примечание

Я бы порекомендовал вам использовать

if(mysqli_stmt_affected_rows($stmt) == 0)

вместо того, чтобы полагаться на некрасивую функцию автопередачи в PHP

if(!mysqli_stmt_affected_rows($stmt))
0 голосов
/ 06 декабря 2011

Если вы выводите stmt и пробуете его непосредственно в SQL, это, вероятно, ваш самый простой способ.

Чтобы попробовать в SQL, используйте командную строку, если вы можете, или загрузите phpmyadmin, который очень легко установитьи выполните запрос там.

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