Sql error mysqli ошибка

mysqli_error

(PHP 5, PHP 7, PHP 8)

mysqli::$errormysqli_errorВозвращает строку с описанием последней ошибки

Описание

Объектно-ориентированный стиль

Процедурный стиль

mysqli_error(mysqli $mysql): string

Возвращаемые значения

Строка с описанием ошибки. Пустая строка, если ошибки нет.

Примеры

Пример #1 Пример с $mysqli->error

Объектно-ориентированный стиль


<?php
$mysqli
= new mysqli("localhost", "my_user", "my_password", "world");/* Проверить соединение */
if ($mysqli->connect_errno) {
printf("Соединение не удалось: %sn", $mysqli->connect_error);
exit();
}

if (!

$mysqli->query("SET a=1")) {
printf("Сообщение ошибки: %sn", $mysqli->error);
}
/* Закрыть соединение */
$mysqli->close();
?>

Процедурный стиль


<?php
$link
= mysqli_connect("localhost", "my_user", "my_password", "world");/* Проверить соединение */
if (mysqli_connect_errno()) {
printf("Соединение не удалось: %sn", mysqli_connect_error());
exit();
}

if (!

mysqli_query($link, "SET a=1")) {
printf("Сообщение ошибки: %sn", mysqli_error($link));
}
/* Закрыть соединение */
mysqli_close($link);
?>

Результат выполнения данных примеров:

Сообщение ошибки: Unknown system variable 'a'

Смотрите также

  • mysqli_connect_errno() — Возвращает код ошибки последней попытки соединения
  • mysqli_connect_error() — Возвращает описание последней ошибки подключения
  • mysqli_errno() — Возвращает код ошибки последнего вызова функции
  • mysqli_sqlstate() — Возвращает код состояния SQLSTATE последней MySQL операции

information at saunderswebsolutions dot com

17 years ago


The mysqli_sql_exception class is not available to PHP 5.05

I used this code to catch errors
<?php
$query
= "SELECT XXname FROM customer_table ";
$res = $mysqli->query($query);

if (!

$res) {
  
printf("Errormessage: %sn", $mysqli->error);
}
?>
The problem with this is that valid values for $res are: a mysqli_result object , true or false
This doesn't tell us that there has been an error with the sql used.
If you pass an update statement, false is a valid result if the update fails.

So, a better way is:
<?php
$query
= "SELECT XXname FROM customer_table ";
$res = $mysqli->query($query);

if (!

$mysqli->error) {
  
printf("Errormessage: %sn", $mysqli->error);
}
?>

This would output something like:
Unexpected PHP error [mysqli::query() [<a href='function.query'>function.query</a>]: (42S22/1054): Unknown column 'XXname' in 'field list'] severity [E_WARNING] in [G:database.php] line [249]

Very frustrating as I wanted to also catch the sql error and print out the stack trace.

A better way is:

<?php
mysqli_report
(MYSQLI_REPORT_OFF); //Turn off irritating default messages$mysqli = new mysqli("localhost", "my_user", "my_password", "world");$query = "SELECT XXname FROM customer_table ";
$res = $mysqli->query($query);

if (

$mysqli->error) {
    try {   
        throw new
Exception("MySQL error $mysqli->error <br> Query:<br> $query", $msqli->errno);   
    } catch(
Exception $e ) {
        echo
"Error No: ".$e->getCode(). " - ". $e->getMessage() . "<br >";
        echo
nl2br($e->getTraceAsString());
    }
}
//Do stuff with the result
?>
Prints out something like:
Error No: 1054
Unknown column 'XXname' in 'field list'
Query:
SELECT XXname FROM customer_table

#0 G:\database.php(251): database->dbError('Unknown column ...', 1054, 'getQuery()', 'SELECT XXname F...')
#1 G:dataWorkSites1framework5testsdbtest.php(29): database->getString('SELECT XXname F...')
#2 c:PHPincludessimpletestrunner.php(58): testOfDB->testGetVal()
#3 c:PHPincludessimpletestrunner.php(96): SimpleInvoker->invoke('testGetVal')
#4 c:PHPincludessimpletestrunner.php(125): SimpleInvokerDecorator->invoke('testGetVal')
#5 c:PHPincludessimpletestrunner.php(183): SimpleErrorTrappingInvoker->invoke('testGetVal')
#6 c:PHPincludessimpletestsimple_test.php(90): SimpleRunner->run()
#7 c:PHPincludessimpletestsimple_test.php(498): SimpleTestCase->run(Object(HtmlReporter))
#8 c:PHPincludessimpletestsimple_test.php(500): GroupTest->run(Object(HtmlReporter))
#9 G:all_tests.php(16): GroupTest->run(Object(HtmlReporter))

This will actually print out the error, a stack trace and the offending sql statement. Much more helpful when the sql statement is generated somewhere else in the code.


se (at) brainbits (dot) net

17 years ago


The decription "mysqli_error -- Returns a string description of the LAST error" is not exactly that what you get from mysqli_error. You get the error description from the last mysqli-function, not from the last mysql-error.

If you have the following situation

if (!$mysqli->query("SET a=1")) {
   $mysqli->query("ROLLBACK;")
   printf("Errormessage: %sn", $mysqli->error);
}

you don't get an error-message, if the ROLLBACK-Query didn't failed, too. In order to get the right error-message you have to write:

if (!$mysqli->query("SET a=1")) {
   printf("Errormessage: %sn", $mysqli->error);
   $mysqli->query("ROLLBACK;")
}


callforeach at gmail dot com

8 years ago


I had to set mysqli_report(MYSQLI_REPORT_ALL) at the begin of my script to be able to catch mysqli errors within the catch block of my php code.

Initially, I used the below code to throw and subsequent catch mysqli exceptions

<?php
try {
  
$mysqli = new mysqli('localhost','root','pwd','db');
    if (
$mysqli->connect_errno)
        throw new
Exception($mysqli->connect_error);

} catch (

Exception $e) {
     echo
$e->getMessage();
}
I realized the exception was being thrown before the actual throw statement and hence the catch block was not being called.My current code looks like
mysqli_report
(MYSQLI_REPORT_ALL) ;
try {
     
$mysqli = new mysqli('localhost','root','pwd','db');
     
/* I don't need to throw the exception, it's being thrown automatically */} catch (Exception $e) {
  echo
$e->getMessage();
}
This works fine and I'm able to trap all mysqli errors


abderrahmanekaddour dot aissat at gmail dot com

9 months ago


<?php// The idea is the add formated errors information for developers to easier bugs detection.$myfile = fopen("database_log.log", "r");
$db = new mysqli("localhost", "root","root","data");
if(!
$db->query("SELECT")){
 
$timestamp = new DateTime();
 
$data_err = " {
     "title": " Select statement error ",
     "date_time": "
.$timestamp->getTimestamp().",
     "error":" "
.$db->error." "
     } "
; // Do more information
 
fwrite($myfile, $data_err); // writing data
}
   
// In separate file do file read and format it for good visual.$db->close(); 
fclose($myfile);
?>

asmith16 at littlesvr dot ca

9 years ago


Please note that the string returned may contain data initially provided by the user, possibly making your code vulnerable to XSS.

So even if you escape everything in your SQL query using mysqli_real_escape_string(), make sure that if you plan to display the string returned by mysqli_error() you run that string through htmlspecialchars().

As far as I can tell the two escape functions don't escape the same characters, which is why you need both (the first for SQL and the second for HTML/JS).


information at saunderswebsolutions dot com

17 years ago


Hi, you can also use the new mysqli_sql_exception to catch sql errors.
Example:
<?php
//set up $mysqli_instance here..
$Select = "SELECT xyz FROM mytable ";
try {
   
$res = $mysqli_instance->query($Select);
}catch (
mysqli_sql_exception $e) {
    print
"Error Code <br>".$e->getCode();
    print
"Error Message <br>".$e->getMessage();
    print
"Strack Trace <br>".nl2br($e->getTraceAsString());
}
?>
Will print out something like
Error Code: 0
Error Message
No index used in query/prepared statement select sess_value from frame_sessions where sess_name = '5b85upjqkitjsostvs6g9rkul1'
Strack Trace:
#0 G:classfileslib5database.php(214): mysqli->query('select sess_val...')
#1 G:classfileslib5Session.php(52): database->getString('select sess_val...')
#2 [internal function]: sess_read('5b85upjqkitjsos...')
#3 G:classfilesincludes.php(50): session_start()
#4 G:testsall_tests.php(4): include('G:dataWorkSit...')
#5 {main}

Anonymous

3 years ago


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
                $this->connection = mysqli_connect($hostname,$username,$password, $dbname);
} catch (Exception $e) {
                echo "Errno: " . mysqli_connect_errno() . PHP_EOL;
                echo "Text error: " . mysqli_connect_error() . PHP_EOL;
                exit;
}

Татьяна5 писал(а): ↑13.05.2017 18:24
А что там написано-то? Картинку сжало, а я плохо вижу
Разве нельзя скопировать текст текстом? (И разместить в [code])

Прошу прощения, не обратил внимания.

Код: Выделить всё

SQL ERROR [ mysqli ]

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'data_base.a.attach_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by [1055]

SQL

SELECT a.attach_id, a.post_msg_id, a.physical_filename, a.real_filename, a.extension, a.filetime, t.topic_title FROM phpbb_attachments a, phpbb_forums f, phpbb_topics t WHERE f.forum_id = 114 AND t.forum_id IN (3, 5, 6, 12, 13, 14, 16, 17, 18, 26, 27, 28, 29, 30, 32, 33, 34, 36, 82, 85, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114) AND t.forum_id NOT IN (103,104,105,18,16) AND (mimetype = "image/jpeg" OR mimetype = "image/png" OR mimetype = "image/gif") AND a.topic_id = t.topic_id AND t.topic_first_post_id = a.post_msg_id GROUP BY a.post_msg_id DESC LIMIT 8

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 855
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 193
CALL: phpbbdbdriverdriver->sql_error()

FILE: [ROOT]/phpbb/db/driver/mysql_base.php
LINE: 45
CALL: phpbbdbdrivermysqli->sql_query()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 261
CALL: phpbbdbdrivermysql_base->_sql_query_limit()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 321
CALL: phpbbdbdriverdriver->sql_query_limit()

FILE: [ROOT]/ext/bb3mobi/imgposts/core/helper.php
LINE: 260
CALL: phpbbdbdriverfactory->sql_query_limit()

FILE: [ROOT]/ext/bb3mobi/imgposts/event/listener.php
LINE: 50
CALL: bb3mobiimgpostscorehelper->last_images_attachment()

FILE: (not given by php)
LINE: (not given by php)
CALL: bb3mobiimgpostseventlistener->last_index_images()

FILE: [ROOT]/vendor/symfony/event-dispatcher/EventDispatcher.php
LINE: 184
CALL: call_user_func()

FILE: [ROOT]/vendor/symfony/event-dispatcher/EventDispatcher.php
LINE: 46
CALL: SymfonyComponentEventDispatcherEventDispatcher->doDispatch()

FILE: [ROOT]/phpbb/event/dispatcher.php
LINE: 60
CALL: SymfonyComponentEventDispatcherEventDispatcher->dispatch()

FILE: [ROOT]/phpbb/event/dispatcher.php
LINE: 46
CALL: phpbbeventdispatcher->dispatch()

FILE: [ROOT]/index.php
LINE: 238
CALL: phpbbeventdispatcher->trigger_event()

Последний раз редактировалось Sheer 13.05.2017 20:58, всего редактировалось 1 раз.

Причина: bb-код

Правильная обработка ошибок позволяет сделать стабильное приложение, которое не будет завершаться неожиданно. В случае возникновения непредвиденной ситуации программа должна выдавать вменяемый ответ, почему она не хочет исполнится. И создание правильного механизма обработки ошибок — это задача программиста.

В этой статье рассмотрим два вида ошибок, которые могут возникнуть при программировании взаимодействия с базой данных. Первый тип — это ошибка подключения к базе данных. Второй тип — это ошибка выполнения запроса к базе данных. Для обработки этих ошибок будем использовать специальные функции для работы с базой.

Ошибка соединения с базой данных

Сразу приведём пример обработки ошибки с соединением с базой данных:

<?php 
   $host = 'localhost'; // адрес сервера
   $db_name = 'database'; // имя базы данных
   $user = 'user'; // имя пользователя
   $password = 'password'; // пароль

   // создание подключения к базе   
      $connection = mysqli_connect($host, $user, $password, $db_name);

   // проверка правильности подключения
      if(!$connection){ // при соединении с базой данных возникла ошибка
         echo 'Ошибка соединения: ' . mysqli_connect_error() . '<br>';
         echo 'Код ошибки: ' . mysqli_connect_errno();
      }else{ // соединение было установлено успешно
         // здесь можно делать запрос к базе, 
         // потому что соединение успешно установлено
      }
?>

В этом примере можно заметить функцию mysqli_connect_error. Она выводит текстовое описание ошибки подключения (на английском языке). В отличии от неё функция mysqli_connect_errno выводит числовой код ошибки, к примеру «1045».

Ошибка запроса к базе

Теперь попробуем доработать пример из предыдущего параграфа и добавить запрос к базе данных. Не будем вдаваться в детали, что будет записано в тексте SQL запроса, просто предположим, что он может завершиться ошибкой. К примеру, из-за неожиданного отключения сервера с базой данных от сети. В примере добавим проверку на наличие ошибок при выполнении запроса:

<?php 
   $host = 'localhost'; // адрес сервера
   $db_name = 'database'; // имя базы данных
   $user = 'user'; // имя пользователя
   $password = 'password'; // пароль

   // создание подключения к базе   
      $connection = mysqli_connect($host, $user, $password, $db_name);

      if(!$connection){ // проверка правильности подключения
         echo 'Ошибка соединения: ' . mysqli_connect_error() . '<br>';
         echo 'Код ошибки: ' . mysqli_connect_errno();
      }else{ // подключение успешно установлено

         // текст SQL запроса, который будет передан базе
            $query = 'SELECT * FROM `USERS`';

         // выполняем запрос к базе данных
            $result = mysqli_query($connection, $query);

            if(!$result){ // запрос завершился ошибкой
               echo 'Ошибка запроса: ' . mysqli_error($connection) . '<br>';
               echo 'Код ошибки: ' . mysqli_errno($connection);
            }else{ // запрос успешно выполнился
               while($row = $result->fetch_assoc()){
                  // обрабатываем полученные данные
               }
            }
         // закрываем соединение с базой
            mysqli_close($connection);
      }
?>

В этом примере есть две функции, которые работают с ошибками базы. Функция mysqli_error возвращает описание ошибки запроса (на английском языке), а функция mysqli_errno возвращает числовой код ошибки, к примеру, «1193».

Обратите внимание, что все функции обработки ошибок в этой статье (mysqli_connect_error, mysqli_connect_errno, mysqli_error, mysqli_errno) возвращают информацию только о последней ошибке. Но ошибок может быть несколько.

Была ли статья полезной?

Была ли эта статья полезна?

Есть вопрос?

хостинг для сайтов

Закажите недорогой хостинг

Заказать

всего от 290 руб

  • Ответить с цитатой
  • -2

Выдает ошибку когда захожу в тему, сам сайт работает.

Общая ошибка
SQL ERROR [ mysqli ]
[0]
Произошла ошибка SQL при выборке на этой странице. Пожалуйста, сообщите администратору, если ошибка будет повторяться.

savchenkoarts M
Автор темы, Новичок
Аватара
Возраст: 34
Откуда: Киев
Репутация: -4
С нами: 9 лет 1 месяц
  • Сайт

  • Ответить с цитатой

Сообщение #2 Sumanai » 27.11.2014, 19:27

Давайте точнее. Что за форум, где ссылка на него, что в логах? Эта ошибка слишком общая, чтобы что- либо сказать.

Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.

Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 10 лет 4 месяца
  • Сайт

  • Ответить с цитатой
  • -2

Сообщение #3 savchenkoarts » 27.11.2014, 20:51

http://chubinskoe.org/viewtopic.php?f=7&t=25

Добавлено спустя 2 минуты 20 секунд:
No values specified for SQL IN comparison

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/includes/db/dbal.php
LINE: 757
CALL: trigger_error()

FILE: [ROOT]/includes/db/dbal.php
LINE: 432
CALL: dbal->sql_error()

FILE: [ROOT]/viewtopic.php
LINE: 1454
CALL: dbal->sql_in_set()

savchenkoarts M
Автор темы, Новичок
Аватара
Возраст: 34
Откуда: Киев
Репутация: -4
С нами: 9 лет 1 месяц
  • Сайт

  • Ответить с цитатой

Сообщение #4 Sumanai » 27.11.2014, 21:35

Ага, что- то с пользователями. Я вижу, у вас есть пользователь Aleksandr, при клике по которому выдаёт «Пользователь не существует». Вы каким- то образом манипулировали со списком пользователей через БД, или просто удалили его?

Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.

Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 10 лет 4 месяца
  • Сайт

  • Ответить с цитатой

не могу войти

Сообщение #5 tanya.volodina. » 27.03.2016, 06:11

Общая ошибка
SQL ERROR [MySQLi] Слишком много соединений [1040] При получении данных этой страницы произошла ошибка SQL. Пожалуйста , обратитесь к администратору , если эта проблема не решена.

tanya.volodina.
Гость

  • Ответить с цитатой

Сообщение #6 Sumanai » 27.03.2016, 11:07

tanya.volodina., вы превысили лимиты хостинга.

Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.

Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 10 лет 4 месяца
  • Сайт

  • Ответить с цитатой
  • 2

Сообщение #7 sag-sag » 27.03.2016, 12:53

и копирайты вырезаны:

Screenshot_2.png
Screenshot_2.png (9.91 КБ) Просмотров: 16275

Заметки администратора [TEHADM.RU]

sag-sag M
Гуру
Аватара
Возраст: 36
Репутация: 411
С нами: 9 лет 9 месяцев
  • Сайт

  • Ответить с цитатой
  • 1

Сообщение #8 ЖЪРЧИК » 27.03.2016, 14:39

Может он движок переписал целиком :biggrin: Это как с Айфона содрать яблоко
Национализм — это когда свой украинский олигарх дороже, чем российский :biggrin:
Казалось бы Ленина актуально почитать насчет этого вопроса…, но 95% рабы телевизора и пабликов

Спойлер
Вспомнился анекдот про то как некая национальность «надкусила» нечто во всех местах

плешивый кот

ЖЪРЧИК
Гуру
Аватара
Репутация: 174
С нами: 8 лет 9 месяцев
  • Jabber

  • Ответить с цитатой
  • 1

Сообщение #9 Sumanai » 27.03.2016, 17:35

sag-sag:и копирайты вырезаны:

Это у автора темы. У tanya.volodina. другая ошибка.

Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.

Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 10 лет 4 месяца
  • Сайт

  • Ответить с цитатой

Сообщение #10 sag-sag » 27.03.2016, 20:54

Sumanai:Это у автора темы. У tanya.volodina. другая ошибка.

я как раз к savchenkoarts обращаюсь.

Заметки администратора [TEHADM.RU]

sag-sag M
Гуру
Аватара
Возраст: 36
Репутация: 411
С нами: 9 лет 9 месяцев
  • Сайт

  • Ответить с цитатой

Сообщение #11 Sumanai » 27.03.2016, 21:14

Он был полтора года назад, это бессмысленно.

Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.

Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 10 лет 4 месяца
  • Сайт

  • Ответить с цитатой
  • 1

Сообщение #12 ЖЪРЧИК » 27.03.2016, 21:50

Это был крик в прошлое :)

То один педофильский форум на пхпббексе поднял, то этот националистический. Че с людьми телевизор делает, нет бы энергию всю на благо человечества, а не девиации и безрассудство … :think:

Может быть как то за добро побороться? Или пусть оно само

плешивый кот

ЖЪРЧИК
Гуру
Аватара
Репутация: 174
С нами: 8 лет 9 месяцев
  • Jabber

  • Ответить с цитатой

Сообщение #13 sasa » 08.10.2016, 15:54

Ошибки SQL [ mysqli как ]

Таблица ‘./u4289264_forum/phpbb_config’ помечена как разбился и последний (автоматический?) ремонт не удалось [144]

в SQL ошибка при выборке на этой странице. Пожалуйста, свяжитесь с администратором, если эта проблема сохраняется.

sasa
Гость

  • Ответить с цитатой

Сообщение #14 Sumanai » 08.10.2016, 16:14

sasa:помечена как разбился и последний (автоматический?) ремонт не удалось

Уберите автоперевод, от него только хуже.
В общем восстановите таблицу phpbb_config в менеджере БД типа phpMyAdmin.

Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.

Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 10 лет 4 месяца
  • Сайт

  • Ответить с цитатой

Сообщение #15 vbnm » 11.10.2016, 14:39

sasa, зайдите в собсный СТК и посмотрите там инструменты восстановления.
Естессно БД лучше для начала править на локалке.

Добавлено спустя 3 часа 9 минут:
О..а у меня такая хрень вылезла

Общая ошибка

[phpBB Debug] PHP : in file [ROOT]/phpbb/db/driver/driver.php on line 855: SQL ERROR [ mysqli ]

Спойлер
Invalid default value for ‘warning_type’ [1067]

SQL

ALTER TABLE phpbb_warnings MODIFY warning_id mediumint(8) UNSIGNED NOT NULL auto_increment, MODIFY user_id mediumint(8) UNSIGNED DEFAULT ‘0’ NOT NULL, MODIFY post_id mediumint(8) UNSIGNED DEFAULT ‘0’ NOT NULL, MODIFY log_id mediumint(8) UNSIGNED DEFAULT ‘0’ NOT NULL, MODIFY warning_time int(11) UNSIGNED DEFAULT ‘0’ NOT NULL, MODIFY warning_active tinyint(1) DEFAULT ‘1’ NOT NULL, MODIFY issuer_id int(8) UNSIGNED DEFAULT ‘0’ NOT NULL, MODIFY warning_days int(11) UNSIGNED DEFAULT ‘0’ NOT NULL, MODIFY warning_type enum(‘remark,warning,ban’) DEFAULT ‘warning’ NOT NULL, MODIFY warning_text text NOT NULL COLLATE utf8_bin, DEFAULT CHARSET=utf8 COLLATE=utf8_bin

FILE: (not given by php)
LINE: (not given by php)
CALL: stk_msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 855
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 193
CALL: phpbbdbdriverdriver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 329
CALL: phpbbdbdrivermysqli->sql_query()

FILE: [ROOT]/stk/tools/support/mysql_upgrader.php
LINE: 337
CALL: phpbbdbdriverfactory->sql_query()

FILE: [ROOT]/stk/tools/support/mysql_upgrader.php
LINE: 70
CALL: mysql_upgrader->_run_result()

FILE: [ROOT]/stk/index.php
LINE: 322
CALL: mysql_upgrader->display_options()

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: stk_msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 855
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 193
CALL: phpbbdbdriverdriver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 329
CALL: phpbbdbdrivermysqli->sql_query()

FILE: [ROOT]/stk/tools/support/mysql_upgrader.php
LINE: 337
CALL: phpbbdbdriverfactory->sql_query()

FILE: [ROOT]/stk/tools/support/mysql_upgrader.php
LINE: 70
CALL: mysql_upgrader->_run_result()

FILE: [ROOT]/stk/index.php
LINE: 322
CALL: mysql_upgrader->display_options()

vbnm
Гуру
Репутация: 108
С нами: 10 лет 2 месяца

  • Ответить с цитатой

Сообщение #16 Sumanai » 11.10.2016, 18:28

vbnm:О..а у меня такая хрень вылезла

На инструменте

mysql_upgrader

?

Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.

Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 10 лет 4 месяца
  • Сайт

  • Ответить с цитатой

Сообщение #17 vbnm » 11.10.2016, 19:13

Sumanai, в СТК такая фишка

Код: Выделить всё
stk/index.php?c=support&t=mysql_upgrader

Добавлено спустя 4 минуты 8 секунд:
копировал ошибку оттель
но, она же отображается и в логе ошибок форума в админке:

Произошла общая ошибка: Общая ошибка
»
[phpBB Debug] PHP : in file [ROOT]/phpbb/db/driver/driver.php on line 855: SQL ERROR [ mysqli ]

Спойлер
Invalid default value for ‘warning_type’ [1067]

SQL

ALTER TABLE phpbb_warnings
MODIFY warning_id mediumint(8) UNSIGNED NOT NULL auto_increment,
MODIFY user_id mediumint(8) UNSIGNED DEFAULT ‘0’ NOT NULL,
MODIFY post_id mediumint(8) UNSIGNED DEFAULT ‘0’ NOT NULL,
MODIFY log_id mediumint(8) UNSIGNED DEFAULT ‘0’ NOT NULL,
MODIFY warning_time int(11) UNSIGNED DEFAULT ‘0’ NOT NULL,
MODIFY warning_active tinyint(1) DEFAULT ‘1’ NOT NULL,
MODIFY issuer_id int(8) UNSIGNED DEFAULT ‘0’ NOT NULL,
MODIFY warning_days int(11) UNSIGNED DEFAULT ‘0’ NOT NULL,
MODIFY warning_type enum(‘remark,warning,ban’) DEFAULT ‘warning’ NOT NULL,
MODIFY warning_text text NOT NULL COLLATE utf8_bin,
DEFAULT CHARSET=utf8 COLLATE=utf8_bin

FILE: (not given by php)
LINE: (not given by php)
CALL: stk_msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 855
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 193
CALL: phpbbdbdriverdriver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 329
CALL: phpbbdbdrivermysqli->sql_query()

FILE: [ROOT]/stk/tools/support/mysql_upgrader.php
LINE: 337
CALL: phpbbdbdriverfactory->sql_query()

FILE: [ROOT]/stk/tools/support/mysql_upgrader.php
LINE: 70
CALL: mysql_upgrader->_run_result()

FILE: [ROOT]/stk/index.php
LINE: 322
CALL: mysql_upgrader->display_options()

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: stk_msg_handler()

FILE: [ROOT]/phpbb/db/driver/driver.php
LINE: 855
CALL: trigger_error()

FILE: [ROOT]/phpbb/db/driver/mysqli.php
LINE: 193
CALL: phpbbdbdriverdriver->sql_error()

FILE: [ROOT]/phpbb/db/driver/factory.php
LINE: 329
CALL: phpbbdbdrivermysqli->sql_query()

FILE: [ROOT]/stk/tools/support/mysql_upgrader.php
LINE: 337
CALL: phpbbdbdriverfactory->sql_query()

FILE: [ROOT]/stk/tools/support/mysql_upgrader.php
LINE: 70
CALL: mysql_upgrader->_run_result()

FILE: [ROOT]/stk/index.php
LINE: 322
CALL: mysql_upgrader->display_options()

vbnm
Гуру
Репутация: 108
С нами: 10 лет 2 месяца

  • Ответить с цитатой

Сообщение #18 Sumanai » 11.10.2016, 19:38

vbnm:СТК такая фишка

Которую нужно использовать только тогда, когда это действительно необходимо.
Хотя ошибка интересная, нужно будет разобрать, так как я где-то не прописал поддержку нового типа enum в БД.

Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.

Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 10 лет 4 месяца
  • Сайт

  • Ответить с цитатой

SQL ERROR

Сообщение #19 TORSION68 » 08.03.2017, 13:04

Доброго времени суток!!! При попытке зайти на форум

http://forum.kia-club.ru/viewforum.php?f=420

выдается следующая информация:
General Error
SQL ERROR [ mysqli ]
Your password has expired. To log in you must change it using a client that supports expired passwords. [1862]
BACKTRACE
FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()
FILE: [ROOT]/includes/db/dbal.php
LINE: 757
CALL: trigger_error()
FILE: [ROOT]/includes/db/mysqli.php
LINE: 104
CALL: dbal->sql_error()
FILE: [ROOT]/common.php
LINE: 122
CALL: dbal_mysqli->sql_connect()
FILE: [ROOT]/viewforum.php
LINE: 17
CALL: include(‘[ROOT]/common.php’)

Вообще не понимаю, что это такое? Проявилось после того, как на форуме нажал на присланную ссылку от одного из пользователей.Не поможете? Моя электронка

rivera_60@mail.ru

Спасибо!!!

TORSION68
Гость

  • Ответить с цитатой

Сообщение #20 Sumanai » 08.03.2017, 15:00

TORSION68:Your password has expired

Очевидно, был сменён пароль на базу данных. Обратитесь к хостеру.

TORSION68:Проявилось после того, как на форуме нажал на присланную ссылку от одного из пользователей

Оригинально. Возможно, ваш ПК заражён. Вам необходимо проверить ваш ПК и сменить все пароли.

Использование поиска продлевает жизнь.
Это форум поддержки форка phpBBex. Поддержка по phpBB осуществляется в других местах.

Sumanai M
Гуру
Аватара
Репутация: 1677
С нами: 10 лет 4 месяца
  • Сайт


Вернуться в Поддержка 1.x

cron

Warning mysqli_error() expects parameter 1 to be mysqli, null given inВводная: есть PHP файл который регистрирует пользователей в базе данных. Вроде бы все хорошо, но пользователь не записывается в базу.

Перед записью открывается соединение, выполняются проверки. То есть соединение с базой данных есть. Сам SQL-запрос составлен правильно, все хорошо. Но данные не записываются в базу, хоть ты тресни.

Возникают два вопроса:

  1. Почему не работает.
  2. Как понять, почему не работает.

Второй вопрос более приоритетный, и что?

Для того, что бы посмотреть ошибки, нужно после запроса:

$result = $con->query("INSERT INTO ... запрос ...");

Добавить код, в итоге получиться:

$result = $con->query("INSERT INTO ... запрос ...");
if (!$result) {
var_dump(mysqli_error($result));
}

При этом мы получим ошибку PHP. Это важно понимать, тут ключевая фраза ошибка PHP.
Я получал следующие ошибки:

  • Warning: mysqli_error() expects parameter 1 to be mysqli, null given in /var/www/fastuser/data/www/webinsert.ru/reg.php on line 133.
  • Warning: mysqli_error() expects parameter 1 to be mysqli, boolean given in /var/www/fastuser/data/www/webinsert.ru/reg.php on line 133

Пользователи на просторах интернета пишут всякий бред, из разряда ты что, не умеешь читать ошибки что ли? Да, от души братуха, о чем говорят ошибки:

MySQL ожидает параметр 1, а получает NULL  или логику. То есть ничего не понятно.

Warning mysqli_error() expects parameter 1 to be mysqli, null given in

Нам нужно понять, в чем ошибка SQL. Я пробовал выполнить запрос на сервере, но он срабатывал.

Что бы понять в чем ошибка SQL нужно перед соединением с БД прописать код:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

И, о чудо, после ввода данных в форму регистрации появилась ошибка MySQL:

data too long for column email at row 1

И теперь стало все понятно.

Данные слишком длинные для столбца ’email’ почты в строке 1.

Смотрю в базу и вижу.

varchar 20

А количество символов в поле e-mail которое я вводил было 22. Вот в чем моя ошибка.


Анатолий Бузов

Анатолий Бузов / об авторе

Обучаю HTML, CSS, PHP. Создаю и продвигаю сайты, скрипты и программы. Занимаюсь информационной безопасностью. Рассмотрю различные виды сотрудничества.


Понравилась статья? Поделить с друзьями:
  • Sql error 22003 ошибка целое вне диапазона
  • Sql command not properly ended oracle ошибка
  • Spn 791 fmi 5 cummins камаз ошибка
  • Spn 791 fm1 5 на камазе ошибка
  • Spn 790 fmi 5 ошибка камаз 65115