|
|
|
|
|
для: Trianon
(01.09.2009 в 01:01)
| | > Совершенно верный вывод.
Ну раз так говорит Trianon на том и остановлюсь.
Всем спасибо! | |
|
|
|
|
|
|
|
для: 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;
|
| |
|
|
|
|
|
|
|
для: Mookapek
(31.08.2009 в 23:15)
| | а скриптовый клиент mysql и command line клиент mysql ничем практически не отличаются.
И тот и другой формируют строки запросов к серверу.
Строки и того и другого клиентов должны быть полностью и окончательно сформированы перед отправкой. | |
|
|
|
|
|
|
|
для: Mookapek
(01.09.2009 в 00:34)
| | >Согласен, ошибся. Ну это придется тогда проверять все переменные на содержание и в случае пустоты присваивать NULL,
Совершенно верный вывод.
>а этого бы не хотелось.
И вдруг откат.
>Без этого вроде можно обойтись, но у меня есть некоторые затруднения.
Почему без этого хочется обойтись, если Вы вроде уже пришли к выводу, что это сделать нужно? | |
|
|
|
|
автор: ! (01.09.2009 в 00:40) |
|
|
для: 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' -- разные вещи. | |
|
|
|
|
|
|
|
для: Trianon
(31.08.2009 в 22:56)
| | Так я же запрос в скрипте делаю , а не в MySQL Command Line Client! | |
|
|
|
|
|
|
|
для: 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. | |
|
|
|
|