我有以下代碼:PHP和MySQL的搜索和傳遞變量問題
http://www.nomorepasting.com/getpaste.php?pasteid=22615
這是由this question提到的JavaScript調用:
我的問題是,我似乎並沒有被能夠通過$查詢,因爲在我自己調用此文件時看起來沒有什麼會發生。
我不確定控制信息流的最佳方式是什麼。我的邏輯好嗎?將查詢通過javascript傳遞給php文件,然後用函數返回它?
我也關心我使用$行,因爲它似乎並不需要。
我有以下代碼:PHP和MySQL的搜索和傳遞變量問題
http://www.nomorepasting.com/getpaste.php?pasteid=22615
這是由this question提到的JavaScript調用:
我的問題是,我似乎並沒有被能夠通過$查詢,因爲在我自己調用此文件時看起來沒有什麼會發生。
我不確定控制信息流的最佳方式是什麼。我的邏輯好嗎?將查詢通過javascript傳遞給php文件,然後用函數返回它?
我也關心我使用$行,因爲它似乎並不需要。
我想你要替換該(36行):
$rows = getRowsByArticleSearch($searchString, $table);
與此:
$rows = getRowsByArticleSearch($query, $table);
而對於安全問題,你應該做的至少是從spelley的崗位mysql_real_escape_string東西。
在你鏈接的代碼中,我看不到$ searchString聲明在哪裏?在上述PHP中,我看到這兩個獨立的部分:
$query ='';
if (isset($_GET["query"]))
$query = $_GET["query"];
和您正在執行後來就停機了頁面的代碼是
$table = 'Auctions';
$rows = getRowsByArticleSearch($searchString, $table);
行不通的,據我可以在代碼中看到,是聲明的$ searchString。然而,更大的擔憂是,在執行它之前,您並未清理查詢字符串。爲了安全起見,我將至少取代:
$result = mysql_query("SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME
FROM {$table}
WHERE upper ARTICLE_NAME LIKE '%" . $searchString . "%'");
與
$result = mysql_query("SELECT ARTICLE_NO, USERNAME, ACCESSSTARTS, ARTICLE_NAME
FROM {$table}
WHERE upper ARTICLE_NAME LIKE '%" . mysql_real_escape_string($searchString) . "%'");
您也應該檢查魔術引號是否被打開,以避免重複轉義。