2011-10-20 56 views
0

您的SQL語法有錯誤;檢查對應於您的MySQL服務器版本的手冊,以在第1行'%$ _ GET [「urlsearch」]'附近使用正確的語法。SQL語法錯誤/查詢

我不確定我在做什麼錯。有什麼建議?

試圖能夠根據我的數據庫(Data的URL列)搜索一個URL並查看它是否存在。

<form method="GET" onSubmit=""><input type="text" name"urlsearch" id="SearchURL" /><input type="submit" value="Search" /></form> 
<?php 
$hostname = * 
$username = * 
$password = * 
mysql_connect($hostname, $username, $password) or die(mysql_error()); 
mysql_select_db("tracker") or die("Unable to select database"); 
$query = 'SELECT URL FROM tracker.Data WHERE URL LIKE %$_GET["urlsearch"]'; 
$results = mysql_query($query) or die(mysql_error()); 
$row = mysql_fetch_row($results) or die(mysql_error()); 
echo "<b>[$row] </b>"; 

>

+4

代碼100%打開至[SQL注入](http://en.wikipedia.org/wiki/SQL_injection)和[CSRF]( http://en.wikipedia.org/wiki/Cross-site_request_forgery)。 – quantumSoup

+0

我不認爲quantumSoup的評論可能獲得足夠的+1評論票。 – Andrew

+0

讓我們希望你的'urlsearch'不包含像'OR 1 = 1; DROP TABLE tracker.Data;更新僱員設置薪金= 0; - ' –

回答

0

變化:?

$query = 'SELECT URL FROM tracker.Data WHERE URL LIKE %$_GET["urlsearch"]'; 

到:

$query = 'SELECT URL FROM tracker.Data WHERE URL LIKE "%'.$_GET["urlsearch"].'"'; 
0

嘗試,

$query = "SELECT `URL` FROM `tracker.Data` WHERE `URL` LIKE '%$_GET[urlsearch]'"; 
+0

上箴言OP $ _GET [urlsearch]仍然不會被識別。 –

+0

@Kon誰說的? –

1

在這樣的查詢中,如果您試圖「搜索」(使用$ _GET [「urlsearch」])並且輸入一個奇怪的符號,就像這種情況下的單引號一樣,它將停止導致錯誤。

這可能被利用(SQL injection)。

使用mysql_real_escape_string()(和/或一些其他功能)來防止這種情況。

0
if (isset($_GET["urlsearch"])) { 
    $search = mysql_real_escape_string($_GET["urlsearch"]); 
    $query = "SELECT URL FROM tracker.Data WHERE URL LIKE '%$search'"; 
    $results = mysql_query($query) or die(mysql_error()); 
    $row = mysql_fetch_row($results); 
    echo "<b>[$row] </b>"; 
} 
0

如果上述不工作,然後嘗試以下:

$query = "SELECT `URL` FROM `tracker.Data` WHERE `URL` LIKE".%$_GET[urlsearch];