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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Не выполняется SQL запрос INSERT
 
 автор: Николай Законов   (17.09.2006 в 16:24)   письмо автору
 
 


$query = "INSERT INTO medias ( id , nameid , name , desc , 
time , width , height , cat , type , authorsite , authorname , mediaurl , code, playcount , flags, instructions, keywords , order)
VALUES ('', '".$nameid."', '".$name."', '".$desc."', '".$time."', '".$width."', '".$height."', '".$cat."', '".$type."', '".$authorsite."',
 '".$authorname."', '".$mediaurl."', '".$customcode."', '0', '".$flags."', '".$instructions."', '".$keywords."' , '-1')";


Не пойму, что не так. К базе подключается, весь скрипт исполняется.
Правда в некоторых других разделах ругался php, мол `id` не правильные
параметры передаются.
Поле `id` - auto_increment

   
 
 автор: ec_stasis   (17.09.2006 в 16:34)   письмо автору
 
   для: Николай Законов   (17.09.2006 в 16:24)
 

Ты пытаешь ся записать в поле INT строку, что не есть правильно.

$query = "INSERT INTO medias (nameid , name , desc , time , width ,
 height , cat , type , authorsite , authorname , mediaurl ,
 code, playcount , flags, instructions, keywords , order)
        VALUES ('".$nameid."', '".$name."', '".$desc."', '".$time."',
 '".$width."', '".$height."', '".$cat."', '".$type."', '".$authorsite."', '".$authorname."', '".$mediaurl."', '".$customcode."', '0', 
'".$flags."', '".$instructions."', '".$keywords."' , '-1')"; 

   
 
 автор: ec_stasis   (17.09.2006 в 16:35)   письмо автору
 
   для: ec_stasis   (17.09.2006 в 16:34)
 

Но выполняться запрос рпри этом все равно должен...

   
 
 автор: Николай Законов   (17.09.2006 в 16:59)   письмо автору
 
   для: ec_stasis   (17.09.2006 в 16:35)
 

Да я тоже это заметил.
Это не должно препятствовать, т.к. auto_increment принимает все подряд..
Ума не приложу, что за капризы.

   
 
 автор: cheops   (17.09.2006 в 17:10)   письмо автору
 
   для: Николай Законов   (17.09.2006 в 16:59)
 

Это не всегда так, в MySQL имеются SQL-режимы, в которых в это поле принимается только NULL. Где дело происходит на локальной машине или хостинге? Если на локальной машине, то что находится в my.ini?

   
 
 автор: Николай Законов   (17.09.2006 в 17:20)   письмо автору
 
   для: cheops   (17.09.2006 в 17:10)
 

Что именно, что-то не вижу ничего к этому относящегося в my.ini
Что именно посмотреть. Да, на localhost тестирую.

   
 
 автор: cheops   (17.09.2006 в 17:38)   письмо автору
 
   для: Николай Законов   (17.09.2006 в 17:20)
 

Посмотрите нет ли в my.ini параметра sql-mode, если есть, то как он выглядит.

   
 
 автор: Николай Законов   (17.09.2006 в 17:45)   письмо автору
 
   для: cheops   (17.09.2006 в 17:38)
 

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

   
 
 автор: cheops   (17.09.2006 в 18:31)   письмо автору
 
   для: Николай Законов   (17.09.2006 в 17:45)
 

Хм... вроде нет режима NO_AUTO_VALUE_ON_ZERO, но лучше вы вообще сотрите эту строку - MySQL прекрасно работает без выставленных режимов, главная цель которых, что-нибудь ограничить...

   
 
 автор: Николай Законов   (17.09.2006 в 17:44)   письмо автору
 
   для: Николай Законов   (17.09.2006 в 17:20)
 

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 'desc, time, width, height, cat, type, authorsite, authorname, me

   
 
 автор: cheops   (17.09.2006 в 18:33)   письмо автору
 
   для: Николай Законов   (17.09.2006 в 17:44)
 

desc - является ключевым словом, как и time и order - возьмите их в обратные кавычки...
<?php
$query 
"INSERT INTO medias ( id , nameid , name , `desc` ,  
`time` , width , height , cat , type , authorsite , authorname , mediaurl , code, playcount , flags, instructions, keywords , `order`) 
VALUES ('', '"
.$nameid."', '".$name."', '".$desc."', '".$time."', '".$width."', '".$height."', '".$cat."', '".$type."', '".$authorsite."', 
 '"
.$authorname."', '".$mediaurl."', '".$customcode."', '0', '".$flags."', '".$instructions."', '".$keywords."' , '-1')";
?>

   
 
 автор: Николай Законов   (17.09.2006 в 18:48)   письмо автору
 
   для: cheops   (17.09.2006 в 18:33)
 

Ок. Почти прокатило. Только теперь ошибка

Field 'disphtmlcode' doesn't have a default value


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

   
 
 автор: cheops   (17.09.2006 в 18:53)   письмо автору
 
   для: Николай Законов   (17.09.2006 в 18:48)
 

У вас в таблице имеется поле disphtmlcode, но он не имеет значение по умолчанию, поэтому игнорировать его в INSERT-запросе нельзя, его тоже нужно указывать.

>Как узнать какие слова являются ключевыми, изначально в скрипте все слова были в обратных
>кавычках.
Вот все ключевые слова MySQL
ACCESSIBLE ADD ALL 
ALTER ANALYZE AND 
AS ASC ASENSITIVE 
BEFORE BETWEEN BIGINT 
BINARY BLOB BOTH 
BY CALL CASCADE 
CASE CHANGE CHAR 
CHARACTER CHECK COLLATE 
COLUMN CONDITION CONNECTION 
CONSTRAINT CONTINUE CONTRIBUTORS 
CONVERT CREATE CROSS 
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP 
CURRENT_USER CURSOR DATABASE 
DATABASES DAY_HOUR DAY_MICROSECOND 
DAY_MINUTE DAY_SECOND DEC 
DECIMAL DECLARE DEFAULT 
DELAYED DELETE DESC 
DESCRIBE DETERMINISTIC DISTINCT 
DISTINCTROW DIV DOUBLE 
DROP DUAL EACH 
ELSE ELSEIF ENCLOSED 
ESCAPED EXISTS EXIT 
EXPLAIN FALSE FETCH 
FLOAT FLOAT4 FLOAT8 
FOR FORCE FOREIGN 
FROM FULLTEXT GRANT 
GROUP HAVING HIGH_PRIORITY 
HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND 
IF IGNORE IN 
INDEX INFILE INNER 
INOUT INSENSITIVE INSERT 
INT INT1 INT2 
INT3 INT4 INT8 
INTEGER INTERVAL INTO 
IS ITERATE JOIN 
KEY KEYS KILL 
LEADING LEAVE LEFT 
LIKE LIMIT LINEAR 
LINES LOAD LOCALTIME 
LOCALTIMESTAMP LOCK LONG 
LONGBLOB LONGTEXT LOOP 
LOW_PRIORITY MATCH MEDIUMBLOB 
MEDIUMINT MEDIUMTEXT MIDDLEINT 
MINUTE_MICROSECOND MINUTE_SECOND MOD 
MODIFIES NATURAL NOT 
NO_WRITE_TO_BINLOG NULL NUMERIC 
ON OPTIMIZE OPTION 
OPTIONALLY OR ORDER 
OUT OUTER OUTFILE 
PRECISION PRIMARY PROCEDURE 
PURGE RANGE READ 
READS READ_ONLY READ_WRITE 
REAL REFERENCES REGEXP 
RELEASE RENAME REPEAT 
REPLACE REQUIRE RESTRICT 
RETURN REVOKE RIGHT 
RLIKE SCHEMA SCHEMAS 
SECOND_MICROSECOND SELECT SENSITIVE 
SEPARATOR SET SHOW 
SMALLINT SPATIAL SPECIFIC 
SQL SQLEXCEPTION SQLSTATE 
SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS 
SQL_SMALL_RESULT SSL STARTING 
STRAIGHT_JOIN TABLE TERMINATED 
THEN TINYBLOB TINYINT 
TINYTEXT TO TRAILING 
TRIGGER TRUE UNDO 
UNION UNIQUE UNLOCK 
UNSIGNED UPDATE UPGRADE 
USAGE USE USING 
UTC_DATE UTC_TIME UTC_TIMESTAMP 
VALUES VARBINARY VARCHAR 
VARCHARACTER VARYING WHEN 
WHERE WHILE WITH 
WRITE X509 XOR 
YEAR_MONTH ZEROFILL 

их можно найти в разделе "Treatment of Reserved Words in MySQL" официальной документации.

>Это что-то вроде зарезервированных слов в языках программирования
Да, это зарезервированные слова, их можно использовать в качестве имён столбцов, но нужно помещать в обратные кавычки, если обычные слова поместить в обратные кавычки - тоже ничего плохого не произойдёт.

   
 
 автор: Николай Законов   (17.09.2006 в 19:40)   письмо автору
 
   для: cheops   (17.09.2006 в 18:53)
 

Спасибо Вам,cheops, за столь подробную консультацию!

Скрипт заработал.
Вот так вот разработчики писали, теперь все просматривать буду, править.
Возможно они писали под Интернет вариант. Есть ли различия в синтаксисе запросов SQL для локальной и онлайн машин?

   
 
 автор: cheops   (18.09.2006 в 01:45)   письмо автору
 
   для: Николай Законов   (17.09.2006 в 19:40)
 

>Есть ли различия в синтаксисе запросов SQL для локальной и онлайн машин?
С высокой долей вероятности ничего менять не потребуется.

   
Rambler's Top100
вверх

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