2013-12-18 45 views
-2

我有一個包含電影和其他的東西,在我的PHP頁面我要選擇一些有電影名稱的表..撇在php查詢不工作

$sql3 = "SELECT * FROM Movies where Movies.nameM='{$row['nameM']}';"; 

該查詢時崩潰了nameM(電影名稱)的名稱中有一個撇號:/

我該如何改變它以正常工作?

感謝您的幫助

+0

代碼如果您遇到這個問題,你應該有http://stackoverflow.com/questions/60174/how-can-i一個非常,非常好的樣子-prevent-sql -injection-in-php –

+0

爲什麼downvote?問題很糟糕? – user3046650

+1

我低估了,因爲我覺得它缺乏研究努力。與個人無關。 –

回答

4

你可以試試:

$sql3 = "SELECT * FROM Movies where Movies.nameM='".mysqli_real_escape_string($row['nameM'])."';"; 

如果您使用的是過時且不適用mysql_*功能:

$sql3 = "SELECT * FROM Movies where Movies.nameM='".mysql_real_escape_string($row['nameM'])."';"; 
+0

這是迄今爲止最合適的答案。爲了向後兼容的目的,你還可以添加一個使用'mysql_real_escape_string()'的例子嗎? –

+4

MySQL_ *函數現在已被棄用,因此不應使用。 –

0

正如Spudley說你那麼r & d更多。只是爲了讓它更容易爲你

你可以使用mysql(i)_真正的轉義函數,但如果你使用的是一個框架在PDO之上工作,你沒有mysql(i)_ *連接並且不能使用它們逃脫字符串 我以前在yii或f3上看到過這個問題或者... 大多數框架支持param安全注入。

\Framework::Query("SELECT .... WHERE column=:param", array(':param'=>$value)); 

但有時您可能需要手動轉義字符串值。要做到這一點與PDO可以獲取對PDO對象,並使用:

substr($pdo->quote($string, , \PDO::PARAM_STR), 1, -1) 

唯一要注意的是, - >引號()也使各地的,他們可以使用SUBSTR得到消滅的結果撇號。

編輯,以明確