2015-06-19 65 views
1

我有這樣的查詢。這個來自一個文本框。由於的是它關閉的字符串。如何在PHP中創建字符串字面值sql

我不想陷在文本框中。因爲我需要允許文本框寫入用戶想要的任何內容作爲原因。

我試圖把@放在變量前面。但它似乎不像C#那樣在字符串之前將@放在字面上。

我知道這也容易注射。但是,如果解決方案也與注射有關,可能會在一塊石頭上擊中兩隻鳥。但是,如果它有可能解決只是逃避將會做的角色。

$_GETVARS['txtReason'] = "'it's already there, in droves.'"; 

UPDATE tablename SET reason_for_exception='".$_GETVARS['txtReason']."' WHERE ID='1' 
+0

我的壞..這是mysqli_real_escape_string –

+0

你能告訴我怎麼樣?因爲變量會來自一個變量。所以用戶可以輸入:它的或者基於他的決定。 – aozora

+0

怎麼樣把它那裏.. –

回答

1
$reason_for_exception = mysql_real_escape_string("your text here"); 

UPDATE tablename SET reason_for_exception= "$reason_for_exception" WHERE ID='1' 
如何

樣?

+0

由於在此之前把字符串的值的變量和消毒變量是我需要的。它在字符串中添加了所需的/。 這是否也會阻止sql注入?或者那是另一個故事? – aozora

+0

是的,它也會..但這是不贊成..我認爲你需要去與mysqli。 =)快樂編碼! –

1

我想你應該試試下面的查詢,並且最好使用存儲過程,這種類型的問題不會發生在那裏。

UPDATE tablename SET reason_for_exception='it''s already there, in droves.' WHERE ID='1' 

或者如果你想繼續正常的查詢然後將該字符串存儲到一些字符串變量,然後嘗試,可能會對你有所幫助。

$_GETVARS['txtReason' = "it's already there, in droves."; 

UPDATE tablename SET reason_for_exception='".mysqli_real_escape_string($link,$_GETVARS['txtReason')."' WHERE ID='1' 
1

這個包裹在mysqli_real_escape_string內容()

參考Mysqli_real_escape_string

$_GETVARS['txtReason' = "it's already there, in droves."; 
UPDATE tablename SET reason_for_exception='".mysqli_real_escape_string($link,$_GETVARS['txtReason')."' WHERE ID='1' 
相關問題