данные, не вставленные в базу данных [дубликат]

Я придумал несколько более длинную версию, которая пытается создать полное имя метода, включая модуль и класс.

https://gist.github.com/2151727 (rev 9cccbf)

  # Public Domain, то есть не стесняйтесь копировать / вставлять  # Считается, что взлом в Python 2 import проверяет def caller_name (skip = 2): "" "Получить имя вызывающего абонента в формате module.class.method` skip` указывает, сколько уровней стека пропустить при получении имени вызывающего абонента.  skip = 1 означает «кто меня звонит», skip = 2 «кто звонит моему абоненту» и т. д. Пустая строка возвращается, если пропущенные уровни превышают высоту стека »« »stack = inspect.stack () start = 0 + skip if len (  стек)  start + 1: return '' parentframe = stack [start] [0] name = [] module = inspect.getmodule (parentframe) # `modname` может быть None, когда кадр выполняется непосредственно в консоли # TODO (techtonik): рассмотрите возможность использования  __main__ if module: name.append (module .__ name__) # обнаружить имя класса, если «self» в parentframe.f_locals: # Я не знаю, какой способ обнаружить вызов из метода объекта # XXX: похоже, нет способа обнаружить  статический вызов метода - это будет # просто вызов функции name.append (parentframe.f_locals ['self'] .__ class __.__ name__) codename = parentframe.f_code.co_name, если codename! = '& lt; module & gt;': # верхний уровень  обычно name.append (кодовое имя) # функция или метод ## Избегайте циклических ссылок и исправлений кадров # https://docs.python.org/2.7/library/inspect.html#the-interpreter-stack del parentframe, возврат в стеке "  . ". join (name)  

22
задан Traveling Salesman 1 September 2012 в 13:16
поделиться

7 ответов

Используйте это:

mysqli_query($this->db_link, $query) or die(mysqli_error($this->db_link)); 
# mysqli_query($link,$query) returns 0 if there's an error.
# mysqli_error($link) returns a string with the last error message

Вы также можете использовать это для печати кода ошибки.

echo mysqli_errno($this->db_link);

Посмотрите здесь и здесь

26
ответ дан Christian 15 August 2018 в 18:03
поделиться

использовать функцию die ()

or die(mysql_error());
9
ответ дан ajcw 15 August 2018 в 18:03
поделиться
  • 1
    Он использует mysqli_*, постарайтесь не направить его на использование mysql_*. – David 1 September 2012 в 13:24

Я использую следующее, чтобы включить все отчеты об ошибках для MySQLi

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

* ПРИМЕЧАНИЕ: не используйте это в рабочей среде.

4
ответ дан Arian Faurtosh 15 August 2018 в 18:03
поделиться

Одна полезная строка кода для вас была бы

$sql = "Your SQL statement here";
$result = mysqli_query($sql) or trigger_error("Query Failed! SQL: $sql - Error: ".mysqli_error(), E_USER_ERROR);

Этот метод лучше, чем умереть, потому что вы можете использовать его для разработки AND production, это постоянное решение.

-1
ответ дан hrvojeA 15 August 2018 в 18:03
поделиться
mysql_query("YOUR QUERY") OR die("Error:".mysql_error());
1
ответ дан Marco Bonelli 15 August 2018 в 18:03
поделиться
  • 1
    Он использует mysqli_query. Безответственно предположить, что он регрессирует до mysql_query. – David 1 September 2012 в 13:25
  • 2
    Ладно, у меня есть твоя точка. Спасибо Дэвиду. – Suraj Gujar 3 September 2012 в 12:55

предложения не работают, потому что они предназначены для стандартного драйвера mysql, а не для mysqli,

$this->db_link->error содержит ошибку, если это произошло

или

mysqli_error($this->db_link)

будет работать

1
ответ дан mc_fish 15 August 2018 в 18:03
поделиться

Попробуйте что-то вроде этого:

$link = @new mysqli($this->host, $this->user, $this->pass) 
$statement = $link->prepare($sqlStatement );
                if(!$statement)
                {
                    $this->debug_mode('query', 'error', '#Query Failed<br/>'.$link->error);
                    return false;
                }
0
ответ дан Surabhil Sergy 15 August 2018 в 18:03
поделиться
Другие вопросы по тегам:

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