Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Проблема с INSERT


Автор: hetfield 17.10.2008, 11:41
Добрый день... Не могу разобраться с ошибкой, помогите...

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

$insert = "";
foreach ($_POST as $key => $value) {
        if ((substr($key, 0, 5) == "tovar") and ($value !== "" )) {
            $tovar_id = substr($key, 6);
            
            $tovar_id = $tovar_id;
            $tovar_kol = $value;

            $query_kat = ("SELECT articul, name FROM `katalog` WHERE `id` = '".$tovar_id."'");
                        $result_kat = mysql_query($query_kat) or die(mysql_error());
                           while($row_kat = mysql_fetch_assoc($result_kat)) { $arr_kat[] = $row_kat; }
                foreach ($arr_kat as $key => $value) {
                             $articul = $value['articul'];
                             $name = $value['name'];                
                    }
            // Затем склеиваю строку , чтобы одним запросом все записать в базу... 
            $insert .= "('', '".$_SESSION['user_id']."', '".$tovar_id."', '".$articul."', '".$name."', '".$tovar_kol."')";
        }                
    }

Пытаюсь записать в базу
Код

$insert = str_replace(")(", ") , (", $insert); 

$query_tovar = "INSERT INTO `tmp_zakaz` ( `id` , `id_user` , `id_tovar`, `articul`, `name`, `kol` ) VALUES '".$insert."'";
$result = mysql_query($query_tovar) or die(mysql_error());



Но не пишет, говорит что "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 '1', '1', '010140', 'Алмазные диск 115 "Sigment" (60115)', '4'')' at line 1"

Автор: Akina 17.10.2008, 11:54
Выведите полный текст полученного запроса (например в файл) и проанализируйте его 

Автор: hetfield 17.10.2008, 12:22
Вот он какой должен получится
Код

INSERT INTO `tmp_zakaz` ( `id` , `id_user` , `id_tovar`, `articul`, `name`, `kol` ) VALUES ('', '1', '1', '010140', 'Алмазные диск 115 "Sigment" (60115)', '2') , ('', '1', '3', '010142', 'Алмазные диск 180 "Sigment" (60180)', '4')


Анализтрую уже долго ))) не пойму в чем дело

Автор: bars80080 17.10.2008, 12:23
ну во-первых, бардак с кавычками

во-вторых, все переменные надо обрамлять соотвтетсвующей функцией: 
Код

$insert .= "('', '".mysql_real_escape_string($_SESSION['user_id'])."', '".mysql_real_escape_string($tovar_id)."', '".mysql_real_escape_string($articul)."', '".mysql_real_escape_string($name)."', '".mysql_real_escape_string($tovar_kol)."')";


в-третьих, непонятно зачем здесь доп.кавычки VALUES '".$insert."'";

ну и конечно, если бы сделал var_dump($query_tovar); сразу бы увидел в чём проблема

Добавлено через 36 секунд
Цитата(hetfield @  17.10.2008,  12:22 Найти цитируемый пост)
Вот он какой должен получится

при чём здесь должен? смотри какой получился

Автор: hetfield 17.10.2008, 12:37
Цитата

в-третьих, непонятно зачем здесь доп.кавычки VALUES '".$insert."'";

вот их убрал и заработало  smile 
А по поводу того, для чего они нужны, на этом же форуме кто-то советовал их ставить... мол, данные в запросе должны быть с одинарными ковычками...

Спасибо за помощь...  smile 

Автор: bars80080 17.10.2008, 13:13
ты их уже ставишь - вокруг самих данных, а не вокруг скобок блока данных

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