2013-05-29 3 views
-1

У меня проблема с SQL. Я пробовал все исправления, которые я нашел, и ничего не работает.Синтаксис SQL Ошибка при отправке полей формы с значением

Это ошибка, я получаю после отправки формы:

**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 'a')' at line 2** 

Это ссылки на значение поля отправленного из текста field name="entity_name"

Чтобы проверить мои исправления для других полей I введенный текст с апострофами, случайно помещенными в каждое текстовое поле.

Все работает, за исключением первого текстового поля. Если перед ошибкой была бы показана синтаксическая проблема для всех текстовых полей и областей.

Я не закомментирован $member = str_replace("'", "'", $member);

и

А также закомментирован $member = mysql_real_escape_string($member);

Ни один из них исправил проблему, но ни на есть $member = addslashes($member);

Может кто-то помочь мне понять, почему существует еще проблема синтаксиса SQL, когда на самом деле этого не должно быть? Любая помощь, которую я могу получить, будет очень признательна.

Вот мой код:

<?php 
session_start(); 
$con = mysql_connect("localhost","*******","*********"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("***********", $con); 

$memberlinksafe = $_POST['entity_name']; 

function strip_punctuation($memberlinksafe) { 
    $memberlinksafe = strtolower($memberlinksafe); 
    $memberlinksafe = preg_replace("/[:punct:]+/", "", $memberlinksafe); 
    $memberlinksafe = str_replace(" +", "", $memberlinksafe); 
    return $memberlinksafe; 
} 

//builds data from logo image to store into database 
$logofile = $_FILES['cover_photo']['tmp_name']; 

$logo = addslashes(file_get_contents($_FILES['cover_photo']['tmp_name'])); 
$logo_name = addslashes($_FILES['cover_photo']['tmp_name']); 

//build data from cover photo image to store into database 
$cover_photo_file = $_FILES['cover_photo']['tmp_name']; 

$cover_photo = addslashes(file_get_contents($_FILES['cover_photo']['tmp_name'])); 
$cover_photo_name = addslashes($_FILES['cover_photo']['tmp_name']); 

//build data from search photo image to store into database 
$search_image_file = $_FILES['cover_photo']['tmp_name']; 

$search_image = addslashes(file_get_contents($_FILES['cover_photo']['tmp_name'])); 
$search_image_name = addslashes($_FILES['cover_photo']['tmp_name']); 

$member = $_POST['member']; 
$member = addslashes($member); 
//$member = str_replace("'", "&#039;", $member); 
//$member = mysql_real_escape_string($member); 

//$entity_name = $_POST[entity_name]; 
//$entity_name = addslashes($entity_name); 
//$entity_name = str_replace("'", "&#039;", $entity_name); 

$keywords = $_POST['keywords']; 
$keywords = addslashes($keywords); 

$street_address = $_POST['street_address']; 
$street_address = addslashes($street_address); 

$city = $_POST['city']; 
$city = addslashes($city); 

$st = $_POST['st']; 
$st = addslashes($st); 

$mailcode = $_POST['mailcode']; 
$mailcode = addslashes($mailcode); 

$website = $_POST['website']; 
$website = addslashes($website); 

$fb_url = $_POST['fb_url']; 
$fb_url = addslashes($fb_url); 

$hours = $_POST['hours']; 
$hours = addslashes($hours); 

$ph_number = $_POST['ph_number']; 
$ph_number = addslashes($ph_number); 

$body_header = $_POST['body_header']; 
$body_header = addslashes($body_header); 
//$body_header = str_replace("'", "&#039;", $body_header); 

$body_text = $_POST['body_text']; 
$body_text = str_replace("'", "&#039;", $body_text); 

$search_blurb = $_POST['search_blurb']; 
$search_blurb = str_replace("'", "&#039;", $search_blurb); 

$sql="INSERT INTO *********** (entity_name, category, keywords, street_address, community_id, city, st, country, mailcode, website, fb_url, email, hours, ph_number, body_header, body_text, search_blurb, dd, ad, ed, gd, md, vd, pd, logo, logofilename, cover_photo, coverphotofilename, search_image, searchimagefilename, memberlinksafe) 
VALUES ('$member','$_POST[category]','$keywords','$street_address','$_POST[community_id]','$city','$st','$_POST[country]','$mailcode','$website','$fb_url','$_POST[email]','$hours','$ph_number','$body_header','$body_text','$search_blurb','$_POST[dd]','$_POST[ad]','$_POST[ed]','$_POST[gd]','$_POST[md]','$_POST[vd]','$_POST[pd]','$logo','$logo_name','$cover_photo','$cover_photo_name','$search_image','$search_image_name','$memberlinksafe')"; 

if (!mysql_query($sql,$con)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
echo "<h1>Thank you for submitting your details!</h1><br><p><a href='business-attraction.php'>Add another</a> business/attraction.</p>"; 

mysql_close($con); 

?> 
+0

Использование PDO или MySQLi, в частности, используя подготовленные заявления сортирует вашу проблему. – hd1

+0

Здесь много чего не так, но сначала вы должны использовать PDO и подготовленные операторы, поскольку расширения 'mysql_ *' устарели. Многие из ваших уязвимостей для экранирования и SQL-инъекций будут исправлены только путем перемещения. – doublesharp

+0

Одно предупреждение - в том числе переменные $ _POST непосредственно в вашей строке запроса SQL допускает атаки SQL-инъекций. –

ответ

0

первым я мог видеть в запросе те неправы, что вам нужно кавычки внутри POST, и вам нужно, чтобы избежать их также.

как тот

$dd = mysql_real_escape_string($_POST["dd"]) ; 

изменения этого

'$_POST[dd]','$_POST[ad]','$_POST[ed]','$_POST[gd]','$_POST[md]','$_POST[vd]','$_POST[pd]' 

в

'$dd','$_POST["ad"]','$_POST["ed"]','$_POST["gd"]','$_POST["md"]','$_POST["vd"]','$_POST["pd"]', 
^^---//continue with other variables escaped like this one 
+0

echo_Samir - Я сделал это изменение, как вы просили, и ошибка все еще происходит, но все же только с первой переменной. –

+0

какая первая переменная? и, пожалуйста, отправьте также, какую ошибку вы получаете. –

+0

$ member Это ошибка, которая отображается в браузере после отправки формы.Ошибка: у вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MySQL, для правильного синтаксиса для использования рядом с 'a') 'в строке 1 –

Смежные вопросы