2 / 2 / 1
Регистрация: 03.06.2013
Сообщений: 46
1

Ошибка: 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 ''','')'

24.11.2013, 14:49. Показов 29169. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, такая проблема:
Есть денвер (PHPmyAdmin и т.д.) в каталоге www лежит мой сайт. В файле сайта - "Untitled-2.php" есть код на добавление записи в таблицу, которая заранее создана в PHPmyAdmin. Код на добавление следующий:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
$id_car=trim(strip_tags($_POST['id_car']));
$country=trim(strip_tags($_POST['country']));
$name_car=trim(strip_tags($_POST['name_car']));
$model=trim(strip_tags($_POST['model']));
$availability=trim(strip_tags($_POST['availability']));
$price=trim(strip_tags($_POST['price']));
 
 
settype($id_car,"int");
settype($country,"string");
settype($name_car,"string");
settype($model,"string");
settype($availability,"string");
settype($price,"int");
 
if(is_null($id_car)||is_null($country)||is_null($name_car)||is_null($model)||is_null($availability)||is_null($price))
{
        echo "<font color='red'>* Data Error<br>";
        if(is_null($id_car))echo "id_car is empty";
        if(is_null($country))echo "country is empty";
        if(is_null($name_car))echo "name_car is empty";
        //if(is_null($A_Time))echo "A_Time is empty";
        if(is_null($model))echo "model is empty";
        if(is_null($availability))echo "availability is empty";
        if(is_null($price))echo "price is empty";
        echo "</font><br>";
}
else
{
        mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD) or die (mysql_error());
        mysql_select_db("test");
        $sql = "INSERT INTO `cars` (`id_car`, `country`, `name_car`, `model`, `availability`, `price`) 
        VALUES ('$id_car','$country','$name_car','$model','$availability','$price')";
        mysql_query($sql) or die (mysql_error());
        mysql_close();
Отображение на форме выполняется с помощью следующего кода:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?=$name?></title>
</head>
<body>
<form action="Untitled-2.php" method="POST">
<table border='1' style="border-collapse: collapse">
<tr>
        <th>Код товара</th>
        <th>Страна изготовитель</th>
        <th>Марка автомобиля</th>
        <th>Модель</th>
        <th>Наличие</th>
        <th>Стоимость</th>
        <th><a href='Untitled-2.php'>На главную</a></th>
</tr>
<tr>
        <th><input type="text" name="id_car"></th>
        <th><input type="text" name="country"></th>
        <th><input type="text" name="name_car"></th>
        <th><input type="text" name="model"></th>
        <th><input type="text" name="availability"></th>
        <th><input type="text" name="price"></th>
        <th><input type="submit" value="Добавить"></th>
</tr>
<?php
 
        mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD) or die (mysql_error());
        mysql_select_db("test");
        $sql="SELECT * from cars ORDER BY id_car";
        //
        $result=mysql_query($sql) or die (mysql_error());
        mysql_close();
        while($row=mysql_fetch_assoc($result))
        {
                echo "<tr>\n";
                echo "\t<td>".$row['id_car']."</td>\n";
                echo "\t<td>".$row['country']."</td>\n";
                echo "\t<td>".$row['name_car']."</td>\n";
                echo "\t<td>".$row['model']."</td>\n";
                echo "\t<td>".$row['availability']."</td>\n";
                echo "\t<td>".$row['price']."</td>\n";
                $a=$row['id_car'];
                echo "\t<th><a href='Untitled-2.php?rm=$a'>Delete</a></th>\n";
                echo "</tr>\n";
        }
 
 
        echo "\n</table>\n<br>\n";
        echo "TOTAL: ".mysql_num_rows($result)." items";
?>
</form>
</body>
</html>
При нажатии на кнопку "Добавить" выскакивает ошибка:
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 2
Подскажите куда копать, я думаю что где то указаны лишние кавычки или скобки и на них ругается.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2013, 14:49
Ответы с готовыми решениями:

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 '
чёто не робит &lt;?php include (&quot;db.php&quot;); session_start(); if (!empty($_SESSION) and...

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
SQL - запрос : CREATE TABLE IF NOT EXISTS `data` ( `id` int(5) NOT NULL auto_increment, ...

Строка 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 'index,te
Скажите пож что это значит и что мне зделать $sql = &quot;INSERT INTO sps...

Выдает ошибку: 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 '
Привет, форумчане, возникла проблема с кодом Php. Написал код для кнопки лайков на сайте, а выдает...

18
Нет ТЗ - давай досвидания
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
24.11.2013, 15:40 2
Цитата Сообщение от arabclock Посмотреть сообщение
Есть денвер
Выкинь денвер и потом поговорим.

Добавлено через 1 минуту
Вообще как бы приложил ты бы ещё типы и поля таблицы.
0
2 / 2 / 1
Регистрация: 03.06.2013
Сообщений: 46
24.11.2013, 15:49  [ТС] 3
Почему денвер выкидывать? Удобная сборка, не надо сильно напрягаться и качать все по отдельности.

Поле Тип Null По умолчанию
id_car int(30) Нет
country varchar(30) Нет
name_car varchar(30) Нет
model varchar(30) Нет
availability varchar(30) Нет
price int(30) Нет
0
Нет ТЗ - давай досвидания
746 / 377 / 64
Регистрация: 01.12.2011
Сообщений: 2,250
24.11.2013, 16:07 4
PHP
1
$sql = "INSERT INTO `cars` VALUES ('{$id_car}','{$country}','{$name_car}','{$model}','{$availability}','{$price}')";
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.11.2013, 16:15 5
BuPy7, это не поможет.
arabclock, проэкранируйте все переменные перед запросом с помощью mysql_real_escape_string.
0
KOPOJI
24.11.2013, 17:12
  #6
 Комментарий модератора 
arabclock, прекратите плодить дубли по всем разделам.
0
2 / 2 / 1
Регистрация: 03.06.2013
Сообщений: 46
24.11.2013, 19:09  [ТС] 7
KOPOJI, ок, прекратил.
вставил
PHP
1
2
3
4
5
6
7
8
9
mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD) or die (mysql_error());
        mysql_select_db("test");
        $item = "'cause it's no good";
        $escaped_item = mysql_real_escape_string($item);
        printf ("Escaped string: %s\n", $escaped_item);    
        $sql ="INSERT INTO `cars` (`id_car`, `country`, `name_car`, `model`, `availability`, `price`) 
        VALUES ($id_car,'$country','$name_car','$model','$availability',$price)";
        mysql_query($sql) or die (mysql_error());
        mysql_close();

Escaped string: \'cause it\'s no good

Добавлено через 10 минут
BuPy7, это не помогло. Самое интересное, что данные в БД записываются, но ошибку каждый раз пишет, и потом при обновлении страницы таблица уже обновлена новыми данными.

Добавлено через 57 минут
Перед запросом.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD) or die (mysql_error());
        mysql_select_db("test");
    
        $id_car = mysql_real_escape_string(id_car);
        printf ("Escaped string: %s\n", $id_car);
        $country = mysql_real_escape_string(country);
        printf ("Escaped string: %s\n", $country);      
        $name_car = mysql_real_escape_string(name_car);
        printf ("Escaped string: %s\n", $name_car);
        $model = mysql_real_escape_string(model);
        printf ("Escaped string: %s\n", $model);
        $availability = mysql_real_escape_string(availability);
        printf ("Escaped string: %s\n", $availability);
        $price = mysql_real_escape_string(price);
        printf ("Escaped string: %s\n", $price);
        
        $sql ="INSERT INTO `cars` (`id_car`, `country`, `name_car`, `model`, `availability`, `price`) 
        VALUES ($id_car,'$country','$name_car','$model','$availability',$price)";
        mysql_query($sql) or die (mysql_error());
        mysql_close();
Escaped string: id_car Escaped string: country Escaped string: name_car Escaped string: model Escaped string: availability Escaped string: price
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
24.11.2013, 19:20 8
"баксы" пропустили
0
2 / 2 / 1
Регистрация: 03.06.2013
Сообщений: 46
25.11.2013, 12:20  [ТС] 9
KOPOJI,ок, понял.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mysql_connect(DB_HOST,DB_LOGIN,DB_PASSWORD) or die (mysql_error());
        mysql_select_db("test");
    
        $id_car = mysql_real_escape_string($id_car);
        printf ("Escaped string: %s\n", $id_car);
        $country = mysql_real_escape_string($country);
        printf ("Escaped string: %s\n", $country);      
        $name_car = mysql_real_escape_string($name_car);
        printf ("Escaped string: %s\n", $name_car);
        $model = mysql_real_escape_string($model);
        printf ("Escaped string: %s\n", $model);
        $availability = mysql_real_escape_string($availability);
        printf ("Escaped string: %s\n", $availability);
        $price = mysql_real_escape_string($price);
        printf ("Escaped string: %s\n", $price);
        
        $sql ="INSERT INTO `cars` (`id_car`, `country`, `name_car`, `model`, `availability`, `price`) 
        VALUES ($id_car,'$country','$name_car','$model','$availability',$price)";
        
        mysql_query($sql) or die (mysql_error());
        mysql_close();
Escaped string: 1 Escaped string: Германия Escaped string: Ауди Escaped string: А6 Escaped string: в наличии Escaped string: 60000

Добавлено через 3 минуты
ну получается данные не искажаются в переменных. все хорошо, но на синтаксис ругается.

Добавлено через 16 часов 54 минуты
ребят, ну неужели ни у кого нет идей? я уже все локти искусал. скоро работу сдавать.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
25.11.2013, 12:24 10
Цитата Сообщение от arabclock Посмотреть сообщение
но на синтаксис ругается.
кто ругается на синтаксис? Как этот "кто-то" ругается на синтаксис?
0
2 / 2 / 1
Регистрация: 03.06.2013
Сообщений: 46
25.11.2013, 12:52  [ТС] 11
KOPOJI,
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 2
это он пишет после добавления, хотя информацию в бд заносит.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
25.11.2013, 13:36 12
PHP
1
2
3
4
5
6
7
8
9
10
11
$id_car = intval($id_car);
        $country = mysql_real_escape_string($country);
        $name_car = mysql_real_escape_string($name_car);
        $model = mysql_real_escape_string($model);
        $availability = mysql_real_escape_string($availability);
        $price = intval($price);
        
        $sql ="INSERT INTO `cars` (`id_car`, `country`, `name_car`, `model`, `availability`, `price`) 
        VALUES ($id_car,'$country','$name_car','$model','$availability',$price)";
        
        mysql_query($sql) or die (mysql_error());
0
2 / 2 / 1
Регистрация: 03.06.2013
Сообщений: 46
25.11.2013, 14:30  [ТС] 13
KOPOJI,
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 2
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
25.11.2013, 15:34 14
че за бред, не должно быть никаких ошибок там..
PHP
1
2
$sql ="INSERT INTO `cars` (`id_car`, `country`, `name_car`, `model`, `availability`, `price`) 
        VALUES ($id_car,'$country','$name_car','$model','$availability','$price')";
Добавлено через 43 секунды
и никак не может быть там '', должно быть 0
0
2 / 2 / 1
Регистрация: 03.06.2013
Сообщений: 46
25.11.2013, 19:29  [ТС] 15
KOPOJI, ну все так же ошибку выдаёт
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
25.11.2013, 19:32 16
не может такого быть. Вы файл не забыли изменить и обновить на сервере?
0
2 / 2 / 1
Регистрация: 03.06.2013
Сообщений: 46
25.11.2013, 19:56  [ТС] 17
KOPOJI, ну я что похож на глупца?
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
25.11.2013, 23:48 18
я не сравниваю людей, я лишь говорю, что такой ошибки при таком запросе и при таком экранировании данных не может быть.
1
2 / 2 / 1
Регистрация: 03.06.2013
Сообщений: 46
26.11.2013, 10:49  [ТС] 19
KOPOJI, может дело в том что у меня в коде дальше указано добавление не верно, так как я заполняю только первую таблицу, а у меня ещё таблицы есть и для них код на php тоже написан(криво).

Добавлено через 3 часа 30 минут
все. решил эту проблему, действительно, как я и предполагал, надо было дальше в коде исправить. KOPOJI, тебе отдельное спасибо за поддержку.
0
26.11.2013, 10:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2013, 10:49
Помогаю со студенческими работами здесь

Ошибка You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the righ
Ошибка &quot;You have an error in your SQL syntax; check the manual that corresponds to your MySQL...

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the r
Помогите горе программисту, не могу понять в чем ошибка. в коде php там где цикл while, на строчке...

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
где допустил ошибку? You have an error in your SQL syntax; check the manual that corresponds to...

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
Есть код CREATE TEMPORARY TABLE `temp` ( `date` date NOT NULL, PRIMARY KEY (`date`) ); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru