2011-10-20 33 views
0

SQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が1行目の '%$ _GET ["urlsearch"]'の近くで使用するようにしてください。SQL構文エラー/クエリ

私は何が間違っているのかよくわかりません。何かアドバイス?

自分のデータベース(URLの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%とhttp://en.wikipedia.org/wiki/Cross-site_request_forgery)。 – quantumSoup

+0

私はquantumSoupのコメントで十分な+1のコメント票を得ることはできなかったと思います。 – Andrew

+0

あなたの 'urlsearch'に''OR 1 = 1;のような値が含まれていないことを望みましょう。 DROP TABLE tracker.Data; UPDATE Emp SET給与= 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

次の試行し動作しない場合、上記([CSRF] [SQLインジェクション](http://en.wikipedia.org/wiki/SQL_injection)に開放

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