2011-09-08 96 views
-2

您好我有上有一個文本區形成具有描述性文本將包含標點符號,如逗號等niceEDIT和PHP/MySQL的特殊字符

在PHP腳本我已經使用這個

$description = empty($_POST['inputDescription'])? 'NULL': "'" . mysql_real_escape_string($_POST['inputDescription']) . "'"; 

但提交包含逗號的是這個文字時,我仍然得到一個語法錯誤..

你有一個錯誤的SQL語法;檢查對應於你的MySQL服務器版本的手冊正確的語法附近「使用s

任何想法將是巨大的,我拉我的頭髮!

編輯大量的代碼(對不起)

<?php 
    session_start(); 
    include "includes/connection.php"; 

    $contact  = $_POST['inputName']; 
    $company = $_POST['inputCompany']; 
    $region    = $_POST['inputRegion']; 
    $address1 = $_POST['inputAddress1']; 
    $address2 = empty($_POST['inputAddress2'])? 'NULL' : "'" . mysql_real_escape_string( $_POST['inputAddress2']) . "'"; 
    $city    = $_POST['inputCity']; 
    $county    = empty($_POST['inputCounty'])? 'NULL' : "'" . mysql_real_escape_string( $_POST['inputCounty']) . "'"; 
    $postcode = $_POST['inputPostcode']; 
    $email   = empty($_POST['inputEmail'])? 'NULL' : "'" . mysql_real_escape_string( $_POST['inputEmail']) . "'"; 
    $telephone1 = $_POST['inputPhoneOne']; 
    $telephone2 = empty($_POST['inputPhoneTwo'])? 'NULL' : "'" . mysql_real_escape_string( $_POST['inputPhoneTwo']) . "'"; 
    $website  = empty($_POST['inputWebsite'])? 'NULL' : "'" . mysql_real_escape_string( $_POST['inputWebsite']) . "'"; 
    $description = empty($_POST['inputDescription'])? 'NULL': "'" . mysql_real_escape_string($_POST['inputDescription']) . "'"; 
    $userid    = $_POST['inputUserID']; 

    if(
    $contact == '' || 
    $company == '' || 
    $address1 == '' || 
    $address2 == '' || 
    $city == '' || 
    $county == '' || 
    $postcode == '' || 
    $telephone1 == '' || 
    $telephone2 == '' || 
    $email == '' || 
    $website == '' || 
    $description == '' || 
    $region == '' || 
    $userid == ''){ 
    $_SESSION['status'] = 'error'; 
    } else { 
     mysql_query("INSERT INTO RegionalContacts 
       (`bID`,`user_id`,`Name`,`Company`,`Address1`,`Address2`,`City`,`County`,`Postcode`,`Telephone1`,`Telephone2`,`eMail`,`Website`,`Description`,`Region`) 
VALUES(NULL,'$userid','$contact','$company','$address1',$address2,'$city',$county,'$postcode','$telephone1',$telephone2,$email,$website,$description,'$region')") or die(mysql_error()); 
     $_SESSION['status'] = 'success'; 
    } 
    header("location: regionalContacts.php"); 
?> 
+0

顯示其執行SQL代碼。 (和SQL。) –

+1

而不是顯示冗長的PHP腳本,你可以附加確切的插入語句 – ajreal

+0

我把這個代碼放在@nickc的請求,以便他有一切可以幫助謝謝你的建議,儘管 –

回答

0

INSERT語句中看起來有(我認爲)傳遞給它沒有他們周圍的引號,如地址2,縣,telephone2,電子郵件字符串值,網站和說明。這會導致語法錯誤。

+0

謝謝這些是必填字段,即不能爲空,所以不能逃脫@ piddl0r –

+0

我想你錯過了我的觀點。在你的INSERT語句中,你有沒有包含在引號中的字符串,這將導致語法錯誤,無論該字段是否允許爲null – piddl0r

+0

'特殊'字符不會導致插入問題,因爲你已經逃脫了它們。 – piddl0r

-1

一些在INSERT語句值的在其周圍引號,別人不一樣:

'$telephone1',$telephone2 

使用準備語句來避免這樣的錯誤......

+0

謝謝,任何人都可以回答這個問題,如果我的描述字段有'如何根據上面的代碼提交到MySQL沒有錯誤? –

+0

已經回答了這個問題:使用[prepared statements](http://php.net/manual/en/pdo.prepared-statements.php)! – feeela