2017-07-29 157 views
-2

我想列出搜索到的電影信息。我可以在mysql查詢列中使用PHP函數嗎?

$sql = "SELECT * FROM movies WHERE title LIKE '%".$_GET['search']."%'"; 

$_GET['search']所以查詢不到風度給出任何結果修改URL名稱。 我可以在標題欄中使用modurl() php函數嗎?

我想是這樣的:

$sql = "SELECT * FROM movies WHERE modurl(title) LIKE '%".$_GET['search']."%'"; 
+2

你不能在sql查詢中使用php函數。 –

+2

你不能將它傳遞給MySQL並期望它被執行,但是你可以在PHP中執行它,然後在查詢中使用結果。但是,您的代碼目前已廣泛應用於[SQL注入](https://en.wikipedia.org/wiki/SQL_injection)_。不要通過將字符串粘在一起來構建查詢。相反,使用[參數綁定](http://php.net/manual/en/pdostatement.bindparam.php)的[prepared statements](http://php.net/manual/en/pdo.prepare.php) 。 – Chris

+2

什麼是'modurl()'在做什麼? –

回答

0

您可以使用[urldecode][1]

$sql = "SELECT * FROM movies WHERE modurl(title) LIKE '%".urldecode($_GET['search'])."%'"; 
0

除了日食的回答是:

雖然可以,但不建議直接放一個到SQL的URL查詢。 這將允許SQL注入和數據庫的安全威脅。

相反,您可以使用預準備語句和參數化查詢。例如:

$title = urldecode($_GET['search']); 

$stmt = $pdo->prepare("SELECT * FROM movies WHERE title LIKE :title"); 
$stmt->execute(array('title' => $title)); 

foreach ($stmt as $row) { 
    // do something with $row 
} 

你可以閱讀更多有關SQL注入here

相關問題