Почему я получаю Array для строковой ошибки преобразования при выполнении запроса в php? И мой метод execute возвращает false. Как это исправить? [Дубликат]

Если .stop() устарел, я не думаю, что мы должны повторно добавить его, как @MuazKhan. Это причина того, почему вещи устаревают и больше не должны использоваться. Просто создайте вспомогательную функцию ... Вот еще версия es6

function stopStream (stream) {
    for (let track of stream.getTracks()) { 
        track.stop()
    }
}
22
задан Taryn 22 March 2017 в 17:27
поделиться

1 ответ

Если оператор PDO возвращает FALSE, это означает, что запрос завершился неудачно. Вы должны установить PDO в режиме надлежащей регистрации ошибок, чтобы знать об ошибке.

Поместите эту строку в свой код сразу после подключения

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

. После получения сообщения об ошибке, вы должны читать и понимать это. Это звучит слишком очевидно, но учащиеся часто упускают из виду чрезвычайную полезность сообщения об ошибке. Однако большую часть времени это объясняет проблему довольно просто. Скажем, если в нем указано, что конкретная таблица не существует, вы должны проверить орфографию, опечатки, регистр букв, учетные данные и т. Д. Или, если он говорит, что в синтаксисе SQL есть ошибка, вам нужно изучить ваш SQL. И проблема находится прямо перед частью запроса, указанной в messaage ошибки.

Вы также должны доверять сообщение об ошибке. Если он говорит, что число токенов не совпадает с числом связанных переменных, то оно равно . То же самое касается отсутствующих таблиц или столбцов. Учитывая выбор, независимо от того, является ли ваша собственная ошибка или сообщение об ошибке неправильным, всегда придерживайтесь первого. Снова это звучит снисходительно, но сотни вопросов на этом сайте доказывают, что это очень полезно.


Обратите внимание, что для того, чтобы увидеть ошибки PDO, вы должны уметь видеть ошибки PHP вообще. Для этого вам нужно настроить PHP в зависимости от среды сайта:

  • на сервере разработки очень удобно иметь ошибки прямо на экране, для которых необходимо включить отображение ошибок :
    error_reporting(E_ALL);
    ini_set('display_errors',1);
    
  • , находясь на реальном сайте, все ошибки должны быть зарегистрированы, но никогда не показаны клиенту. Для этого настройте PHP следующим образом:
    error_reporting(E_ALL);
    ini_set('display_errors', 0);
    ini_set('log_errors', 1);
    

Обратите внимание, что error_reporting должно быть установлено на E_ALL все время.

Также обратите внимание, что, несмотря на общее заблуждение, для сообщения об ошибках не должно использоваться никаких попыток. PHP сообщит вам об ошибках PDO уже и в лучшем виде. Невыставленное исключение очень полезно для разработки, но если вы хотите показать настроенную страницу ошибки, по-прежнему не используйте try catch для этого, но только установите собственный обработчик ошибок . В двух словах вам не нужно рассматривать ошибки PDO как нечто особенное, но рассматривать их как любую другую ошибку в вашем коде.

25
ответ дан Your Common Sense 16 August 2018 в 00:50
поделиться
  • 1
    Как это отвечает на вопрос ОП? – NaijaProgrammer 18 September 2015 в 09:25
  • 2
    Благодарю. Я нашел ошибку каталога и теперь отлаживаю. – Rifthy 18 September 2015 в 09:26
  • 3
    @NaijaProgrammer id не делает, но он может привести его / ее, чтобы найти ответ на основе сообщения об ошибке, предложенного «Your Common Sense». .. – DTH 18 September 2015 в 10:16
  • 4
    Ответ теперь лучше с обновлениями. +1. – NaijaProgrammer 18 September 2015 в 10:23
Другие вопросы по тегам:

Похожие вопросы: