[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запись в базу
Kumirska
Привет всем!
Наткнулся на очень странную проблему, склоняюсь к тому что я перегрелся=) так как проблема вообще смешная,но времени потратил уже добрые 40 минут...

<?php

define("DB_HOST", "localhost");
define("DB_LOGIN", "root");
define("DB_PASSWORD", "root2");

mysql_connect(DB_HOST, DB_LOGIN, DB_PASSWORD) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");

mysql_select_db('gbook') or die(mysql_error());
$name = 'Alex';
$email = 'mav@kz';
$msg = 'Dobriy den!';
$zapros = "INSERT INTO msgs(name,email,msg) VALUES($name,$email,$msg)";
$res = mysql_query($zapros) or die('Ошибка добавления в базу новой информации'.mysql_error());
if($res==TRUE) echo "<p>Все прошло успешно!";
else echo "<p>Все прошло херово";


Вот база данных:

--
-- База данных: `gbook`
--

-- --------------------------------------------------------

--
-- Структура таблицы `msgs`
--

CREATE TABLE IF NOT EXISTS `msgs` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`msg` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;



Пользователь root с паролем root2 есть, наделем всеми правами. Не понимаю в чем дело, самое интересное что SELECT выводит все вручную добавленные элементы,а вот ИНСЕРТ не пашет



Спустя 2 минуты, 25 секунд (8.11.2011 - 15:03) Michael написал(а):
$msg = 'Dobriy den'!';

ошибка.

$zapros = "INSERT INTO msgs(name,email,msg) VALUES($id,$name,$email,$msg)";

а где одинарные кавычки?

Спустя 50 секунд (8.11.2011 - 15:04) TranceIT написал(а):
$zapros = "INSERT INTO msgs(name,email,msg) VALUES($id,$name,$email,$msg)";

В 3 поля добавляете 4 значения.

Спустя 21 минута, 3 секунды (8.11.2011 - 15:25) Winston написал(а):
$zapros = "INSERT INTO `msgs` (`name`, `email`, `msg`) VALUES ('" . $name . "', '" . $email . "', '" . $msg . "')";

Спустя 16 часов, 4 минуты (9.11.2011 - 07:29) Kumirska написал(а):

define("DB_HOST", "localhost");
define("DB_LOGIN", "root");
define("DB_PASSWORD", "root2");

mysql_connect(DB_HOST, DB_LOGIN, DB_PASSWORD) or die(mysql_error());
mysql_query("SET NAMES 'utf8'");

mysql_select_db('gbook') or die(mysql_error());
$name = "Alex";
$email = "mav@kz";
$msg = "Dobriy den!";
$zapros = "INSERT INTO `msgs`(`name`,`email`,`msg`) VALUES(".$name.",".$email.",".$msg.")";
$res = mysql_query($zapros) or die('Ошибка добавления в базу новой информации'.mysql_error());
if($res==TRUE) echo "<p>Все прошло успешно!";
else echo "<p>Все прошло херово";



SHOW GRANTS FOR `root`@`localhost`;



GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' ...


Но при открытии скрипта выдает ошибку:
Ошибка добавления в базу новой информации 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 '@kz,Dobriy den!)' at line 1

Спустя 16 минут, 35 секунд (9.11.2011 - 07:45) Kumirska написал(а):
Проверил SELECT,DELETE пашет, а что касается записи INSERT и UPDATE не пашут

Спустя 20 минут, 8 секунд (9.11.2011 - 08:05) imbalance_hero написал(а):
Kumirska
Значения надо брать в кавычки.
VALUES ('text','text','text')
Итого:
VALUES ('".$var."', ... 

Спустя 6 минут, 53 секунды (9.11.2011 - 08:12) sergeiss написал(а):
Цитата (Winston @ 8.11.2011 - 16:25)
$zapros = "INSERT INTO `msgs` (`name`, `email`, `msg`) VALUES ('" . $name . "', '" . $email . "', '" . $msg . "')";

Правильно, но слишком длинно и не красиво :) Можно попроще написать (найди 6 отличий):
$zapros = "INSERT INTO `msgs` (`name`, `email`, `msg`) VALUES ('$name', '$email', '$msg')";

Спустя 3 минуты, 30 секунд (9.11.2011 - 08:16) imbalance_hero написал(а):
sergeiss
Как знаешь, я люблю, когда всё перед глазами:
mysql_query("
INSERT INTO `table` SET
`cell1` = '"
.mysql_real_escape_string($value1)."',
`cell2` = '"
.mysql_real_escape_string($value2)."',
`cell3` = '"
.mysql_real_escape_string($value3)."'
"
);

Спустя 6 минут, 24 секунды (9.11.2011 - 08:22) Kumirska написал(а):
я тоже люблю все наглядно писать,насчет фильтра согласен что его целесообразней вставлять в сам запрос непосредственно в указании добавляемых переменных, хотя добрая часть делают фильтрующую от всего возможного мусора функцию,а в запросах голые переменные.
Спасибо за помощь,как всегда завис на глупой ошибке, действительно надо было взять экранированные переменные в кавычки, это ведь тоже строки.


_____________
никому не дано знать абсолютной истины, ибо понятия, которыми мы оперируем, сами по себе относительны
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.