2016-05-18 3 views
-4

Мне нужна помощь. Я получаю следующую ошибку при использовании PHP и MySQLПолучение ошибки в SQL-запросе с использованием PHP и MySQL

Error:

#1064 - 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 's',quadrant='2',city='Bhubaneswar', proviance='Odisha',postal='751007',address='' at line 1

Мой запрос приведен ниже.

UPDATE db_restaurant_basic SET date='2016-05-18 03:15:30', rest_name='Celli's',quadrant='2',city='Bhubaneswar', proviance='Odisha',postal='751007',address='Jaydev vihar',country='India',person='Subhrajyoti',mobile='6743011615',url='http://orimark.com', status='1',premium='1',image='ga7vckp8irx80k9_Mozila-win10.png',business_phone_no='0674234235',email='[email protected]',multiple_image='ctvciw0586w29_IE11-WIN10.png' WHERE member_id='182' 

Пожалуйста, помогите решить эту проблему.

+4

Вам необходимо избегать ввода. 'rest_name = 'Celli's',' должно быть 'rest_name = 'Celli \' s ',' – Farkie

+0

, это результат запроса. Как я могу это сделать в своем исходном запросе, который является этим "" UPDATE db_restaurant_basic SET date =' $ date ', rest_name =' $ uName ', quadrant =' $ quadrant ', city =' $ city ', proviance =' $ provience ', postal =' $ postal ', address =' ​​$ address ', country =' $ country ' , person = '$ conperson', mobile = '$ mobno', url = '$ userurl', status = '$ status', premium = '$ premium', image = '$ image', business_phone_no = '$ businessno' email = '$ email', multiple_image = '$ mulimage' WHERE member_id = '$ member_id' "' – subhra

+0

@Farkie, что '\\' не в нужном месте –

ответ

-3
UPDATE db_restaurant_basic 
SET 
date='2016-05-18 03:15:30', 
rest_name='Celli''s', 
quadrant='2', 
city='Bhubaneswar', 
proviance='Odisha', 
postal='751007', 
address='Jaydev vihar', 
country='India', 
person='Subhrajyoti', 
mobile='6743011615', 
url='http://orimark.com', 
status='1', 
premium='1', 
image='ga7vckp8irx80k9_Mozila-win10.png', 
business_phone_no='0674234235', 
email='[email protected]', 
multiple_image='ctvciw0586w29_IE11-WIN10.png' 
WHERE member_id='182'; 
+0

Так что вы изменили. – subhra

0
UPDATE db_restaurant_basic 
SET 
date='2016-05-18 03:15:30', 
rest_name='Celli''s', 
quadrant='2', 
city='Bhubaneswar', 
proviance='Odisha', 
postal='751007', 
address='Jaydev vihar', 
country='India', 
person='Subhrajyoti', 
mobile='6743011615', 
url='http://orimark.com', 
status='1', 
premium='1', 
image='ga7vckp8irx80k9_Mozila-win10.png', 
business_phone_no='0674234235', 
email='[email protected]', 
multiple_image='ctvciw0586w29_IE11-WIN10.png' 
WHERE 
member_id='182' 

Вам нужно бежать одиночные кавычки (Celli в) используя еще одну одинарную кавычку (виолончелей 'ы). замените одну котировку на две одинарные кавычки

Примечание: Если значения исходят из PHP, вы должны использовать привязку своих параметров с помощью PDO или mysqli. Функции mysql устарели

2

В вашем запросе есть ошибка: вы должны properly escape your strings перед тем, как поместить их в инструкцию SQL. В этом случае символ ' анализируется как конец строки.

Пример кода:

$sanitizedText = mysqli_real_escape_string($connection, $uName); 
+2

'mysqli_real_escape_string' нужен первый параметр в качестве соединительной строки – Saty

+0

ops, отредактированный, чтобы исправить ответ! Простите, прошло уже некоторое время с тех пор, как я использовал эти функции. – deez4h

2

Использование $var=mysql_real_escape_string($var); по всем переменным. Затем используйте его в запросе. http://php.net/manual/en/function.mysql-real-escape-string.php

+0

'Предупреждение. Это расширение было устарело в PHP 5.5.0, и он был удален в PHP 7.0.0. Вместо этого следует использовать расширение MySQLi или PDO_MySQL. ' – deez4h

1

Вам нужно использовать настоящую escape-строку для строковых значений, чтобы убедиться, что она не отправляет одиночные или двойные кавычки в запрос (который затем разбивает запрос). В вашем случае, строка «Селли в» завершает блок запроса, таким образом, запрос вы отправляете в MySQL фактически

UPDATE db_restaurant_basic 
SET 
date='2016-05-18 03:15:30', 
rest_name='Celli' 

Если вы убегаете ввод, вы сможете избежать этой проблемы в целом. Пример:

$restaurantName = mysqli_real_escape_string($connection,$_POST['restName']); 

Вы затем использовать переменную $restaurantName в запросе вместо.

+0

' mysqli_real_escape_string' нужен первый параметр в качестве соединительной строки – Saty

+0

My bad! Отредактированный ответ :) – Bonius

+0

Теперь он выглядит правильно! – Saty

0

привет, попробуйте, как показано ниже.

$rest_name = "'".mysql_real_escape_string($rest_name)."'"; 

сначала нужно использовать выше функции для $rest_name переменной, а затем запустить проход в запросе он будет работы.