Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Значение по умолчанию

Сообщения:  [1-10]   [11-17] 

 
 автор: Mookapek   (01.09.2009 в 01:58)   письмо автору
 
   для: Trianon   (01.09.2009 в 01:01)
 

> Совершенно верный вывод.
Ну раз так говорит Trianon на том и остановлюсь.
Всем спасибо!

  Ответить  
 
 автор: Trianon   (01.09.2009 в 01:08)   письмо автору
 
   для: Mookapek   (31.08.2009 в 23:04)
 

$number = 5;
$name = 'Вася';


$n = is_null($number) ? 'NULL' : intval($number);
$s = is_null($name)   ? 'NULL' : ("'". mysql_real_escape_string($name) . "'");
$sql = "INSERT INTO `tbl`  (`number`,`name`) VALUES ($n, $s)";

echo $sql; 

  Ответить  
 
 автор: Trianon   (01.09.2009 в 01:04)   письмо автору
 
   для: Mookapek   (31.08.2009 в 23:15)
 

а скриптовый клиент mysql и command line клиент mysql ничем практически не отличаются.
И тот и другой формируют строки запросов к серверу.
Строки и того и другого клиентов должны быть полностью и окончательно сформированы перед отправкой.

  Ответить  
 
 автор: Trianon   (01.09.2009 в 01:01)   письмо автору
 
   для: Mookapek   (01.09.2009 в 00:34)
 

>Согласен, ошибся. Ну это придется тогда проверять все переменные на содержание и в случае пустоты присваивать NULL,

Совершенно верный вывод.

>а этого бы не хотелось.

И вдруг откат.


>Без этого вроде можно обойтись, но у меня есть некоторые затруднения.

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

  Ответить  
 
 автор: !   (01.09.2009 в 00:40)
 
   для: Mookapek   (01.09.2009 в 00:34)
 

Ну это смотря как проверять. Вы бы как это делали?

  Ответить  
 
 автор: Mookapek   (01.09.2009 в 00:34)   письмо автору
 
   для: !   (01.09.2009 в 00:18)
 

Согласен, ошибся. Ну это придется тогда проверять все переменные на содержание и в случае пустоты присваивать NULL, а этого бы не хотелось. Без этого вроде можно обойтись, но у меня есть некоторые затруднения.

  Ответить  
 
 автор: !   (01.09.2009 в 00:18)
 
   для: Mookapek   (31.08.2009 в 03:19)
 

> Получается это Incorrect integer value: 'NULL' for column 'house_number' at row 1".

Вот прямо так с апострофами пишите? NULL и 'NULL' -- разные вещи.

  Ответить  
 
 автор: Mookapek   (31.08.2009 в 23:15)   письмо автору
 
   для: Trianon   (31.08.2009 в 22:56)
 

Так я же запрос в скрипте делаю , а не в MySQL Command Line Client!

  Ответить  
 
 автор: Mookapek   (31.08.2009 в 23:04)   письмо автору
 
   для: Trianon   (31.08.2009 в 22:56)
 

Спасибо, что разъяснили, но может подскажете, как правильно сделать?

  Ответить  
 
 автор: Trianon   (31.08.2009 в 22:56)   письмо автору
 
   для: Mookapek   (31.08.2009 в 22:03)
 

>CREATE TABLE tbl (
>number INT,
>name TINYTEXT NOT NULL
>); - таблица
>
>$number = '';
>$name = "Вася";
>
>Такой запрос INSERT INTO tbl VALUES ('$number', '$name') выдает Incorrect integer value: '' for column 'number' at row 1.

Само собой. number у Вас объявлено как число. А Вы туда строку (доллар с буквами) поместить пытаетесь.

>Если убрать кавычки с $number, т.е. INSERT INTO tbl VALUES ($number, '$name'), то выдает это You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 'Вася')' at line 1.

Само собой. Потому что $number не является выражением на языке SQL.
'$number' - является выражением. Строковым. А $number не является. Вообще никаким.

SQL ничего не знает (и не может знать) о переменных php.
Сервер SQL зачастую вообще исполняется на другой машине, нежели крутится apache с php.

  Ответить  

Сообщения:  [1-10]   [11-17] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования