2012-01-22 119 views
0

好吧,我出去拉我的頭髮在此,對谷歌沒有幫助這一點,INSERT INTO SQL變量與Whitspaces

if (isset ($_GET['comment'])) 

    $commentEntered = $_GET['comment']; 

else 

    $commentEntered = "refuse"; 

上面我得到的變量然後我把它傳遞到與數據庫下面的代碼,是的,我知道它有注射的危險。

$sql = "insert into $DB_Table (comment) values('$commentEntered');"; 

$res = mysql_query($sql,$con) or die(mysql_error()); 

mysql_close($con); 

if ($res) { 

    echo "success"; 

}else{ 

    echo "faild"; 
} 

所以當我在文本框中輸入一個句子時,它會將它傳遞給這個php文件。 GET方法獲取輸入的註釋並將其存儲在$ commentEntered中

現在,當我在文本框中輸入一個單詞時,評論存儲就沒有問題。但是,當我輸入由空格分隔的多個單詞時,它不起作用。

任何想法?

+2

請定義「不起作用」。怎麼了? –

+0

沒有評論存儲在數據庫中 – Devster101

+0

您是否檢查過參數的內容通過'var_dump($ _ GET ['comment']);'? – VolkerK

回答

0

找出它遇到查詢之前發生了什麼。

var_dump($commentEntered) 

我的賭注是URL包含空格而不是%20,因此$ commentEntered是空格首次出現之前的所有內容。通過調試找出。解決這個問題的唯一方法就是在角色遇到腳本之前逃避角色。

+0

正如我所說,我通過iPhone上的目標C程序訪問它,這使得它很難從中獲取任何類型的錯誤消息,當我打印出$ commentEntered時,只有在沒有空白時纔會返回它。你說得很對,因爲它讀取了空白前的所有內容,儘管我無法想象爲什麼 – Devster101

+0

字符需要轉義,空格表示它是URL的結束,你需要轉義字符以使其在命中腳本之前變得友好。例如... http://myscript.com/index.php?q=PASS ME NOW index.php只識別PASS http://myscript.com/index.php?q=PASS%20ME% 20NOW index.php認識到整個事情 –

+0

$ commentEntered的VarDump返回字符串(0)「」當我輸入沒有文本,當我輸入「OK」它返回字符串(2)「確定」,並且當我輸入「Thats確定「它什麼都沒有返回? – Devster101