2008-12-10 30 views
0

我有以下代码:PHP和MySQL的搜索和传递变量问题

http://www.nomorepasting.com/getpaste.php?pasteid=22615

这是由this question提到的JavaScript调用:

我的问题是,我似乎并没有被能够通过$查询,因为在我自己调用此文件时看起来没有什么会发生。

我不确定控制信息流的最佳方式是什么。我的逻辑好吗?将查询通过javascript传递给php文件,然后用函数返回它?

我也关心我使用$行,因为它似乎并不需要。

回答

1

我想你要替换该(36行):

$rows = getRowsByArticleSearch($searchString, $table); 

与此:

$rows = getRowsByArticleSearch($query, $table); 

而对于安全问题,你应该做的至少是从spelley的岗位mysql_real_escape_string东西。

0

在你链接的代码中,我看不到$ 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) . "%'"); 

您也应该检查魔术引号是否被打开,以避免重复转义。