Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > не выводится ошибка mysql


Автор: szz 8.2.2007, 05:26
Когда у меня ошибка в запросе, то она почему-то не выводится.
Пришлось сделать так:
Код

if (mysql_error()) {
    echo "ошибка в запросе ", $Query,
     ": ",   mysql_error();
}

  Но все равно ошибку не показвает! Показывает только "ошибка в запросе таком-то: [а причина не показана, т.е mysql_error() ниего не выводит]"

Автор: Voventus 8.2.2007, 08:03
А так?
Код

if (mysql_error()) 
  
    print ("ошибка в запросе ".$Query.": ".mysql_error());



Автор: Mal Hack 8.2.2007, 21:15
Мне вот интересно, а про type casting слышали? Как это строку можно сравнивать с булевым значением?
Наверное mysql_errno надо использовать, я так думаю.

Автор: szz 9.2.2007, 07:38
Цитата
Как это строку можно сравнивать с булевым значением?

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

Автор: -=Ustas=- 9.2.2007, 08:33
Цитата(szz @  9.2.2007,  07:38 Найти цитируемый пост)
Вполне можно.

В таком случае, так как ты проверяешь (без типизации === ) - у тебя всегда будет TRUE

Автор: szz 9.2.2007, 12:41
  Неужели?
Код

<?
$string='something';
$string2 = '';
echo 'string 1 '.($string?'full':'empty')."<br>".
    'string 2 '.($string2?'full':'empty');
?>

  Что будет на выходе?

Автор: -=Ustas=- 9.2.2007, 17:59
szz, возможно. Но это не правильно.

Автор: Mal Hack 9.2.2007, 18:58
Цитата(szz @  9.2.2007,  07:38 Найти цитируемый пост)
  Вполне можно.

Прочитай пожалуйста про type casting... Ну не хочу я больше от тебя слашыть подобный бред...

Добавлено @ 18:58 
Скажем так, можно-то можно, но вот правильность уж извините...

Автор: szz 10.2.2007, 08:43
Не надо меня учить про type casting,  я на сях пять лет писал прежде чем с рнр познакомился.
 И вначале был ошарашен, и даже возмущен тем, как php разные типы приводит к булю. И делал всегда явные преобразования. Но со временем понял, что так вполне ясно и довольно просто.

А вот цитата из мана "Converting to boolean" (толстым я выделил то, что относится к нашей теме)
Цитата
To explicitly convert a value to boolean, use either the (bool) or the (boolean) cast. However, in most cases you do not need to use the cast, since a value will be automatically converted if an operator, function or control structure requires a boolean argument. 

...

When converting to boolean, the following values are considered FALSE: 


the boolean FALSE itself

the integer 0 (zero) 

the float 0.0 (zero) 

the empty string, and the string "0"

an array with zero elements

an object with zero member variables (PHP 4 only)

the special type NULL (including unset variables) 


   И нигде не написано, что рекомендуется делать явное преобразование, напротив: 
in most cases [B]you do not need to use the cast, since a value will be automatically converted if an operator, function or control structure requires a boolean argument.[/B]
теперь посмотрим:
   первая часть тренарного выражения и if требуют бинарное значение? Да.
  В случае стринга что рассматривается как false? the empty string, and the string "0", остальное true.
Будет ли автоматически преобразовано значение? Да.

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

Цитата
Скажем так, можно-то можно, но вот правильность уж извините...

   Нигде в мане не заметил того, чтоб говорилось что это неправильно. Если есть, процитируй пожалуйста?

Автор: -=Ustas=- 10.2.2007, 10:55
szz, тебя отговаривать никто не собирается, деалай так как тебе удобно  smile 

Автор: Mal Hack 10.2.2007, 13:27
Цитата(szz @  10.2.2007,  08:43 Найти цитируемый пост)
Не надо меня учить про type casting,  я на сях пять лет писал прежде чем с рнр познакомился.

Ну и что что видел? Люди, которые на сях нормально программировали такого не напишут...

И еще...
Цитата(Mal Hack @  8.2.2007,  21:15 Найти цитируемый пост)
Наверное mysql_errno надо использовать


Добавлено @ 13:27 
И еще... Правильность в мануале не пишется. Это опыт и мысли..

Автор: szz 10.2.2007, 17:16
Спор бессмысленен.
   Это один из вариантов.
 То, что является результатом твоего опыта - не есть абсолютная истина.

Автор: -=Ustas=- 10.2.2007, 19:05
Цитата(szz @  10.2.2007,  17:16 Найти цитируемый пост)
То, что является результатом твоего опыта

По крайней мере, ели писать, пологаясь на твой опыт, т.е. без жесткой типизации данных в приложении, я тебе даю гарантию, что это приложение будет иметь глюк на глюке и глюком погонять (конечно это к маленьким скриптам, 100 - 1000 строк кода, не относится). 
Есть обобщенные нормы кодинга, не затрагивающие конкретный язык, но относящиеся к каждому языку... ибо нафиг тогда тужны были бы типы данных?!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)