2012-04-30 10 views
0

私のデータベースでページsearch.phpから検索するためにユーザーから名前を取得しています。私は名前に単一引用符( ')またはバックスラッシュ(\)を渡すときmysql selectクエリでエラーが発生しました

<?php 
mysql_connect("localhost","root",""); 
mysql_select_db("amdsvcjdsvhck"); 
$re=$_GET['text']; 

$sql="select sdf from contact where zip = '$re'"; 
$ess=mysql_query($sql); 
$num=mysql_num_rows($ess); 
for($i=0;$i<$num;$i++) 
{$fow=mysql_fetch_assoc($ess); 
echo '<div>'.$fow['zip'].'</div>' ; 
} 
?> 

今、このページにエラーを与えています。

答えて

0

試してみてください。

$re=$_GET['text']; 
$re = mysql_real_escape_string($re); 
$sql="select sdf from contact where zip = '".$re."'"; 
+0

あなたが受け入れ答えとしてそれをマークすることができ、それはあなた –

+0

のために働いていた場合、オーケー...........あなたはこのエラーを得た –

+0

理由は、文字 'でありますMySQLクエリで文字列を終了します。だから、 'name = 'John O'Connor'という名前の連絡先からのアドレスを選択するようなクエリでは、MySQLはJohn Oという名前の人を探す必要があると考えています。それは一重引用符を超えて見ていない。そして、そのクエリで 'Connor'を見ると文字列がすでに終わってしまっていたのでしょうか?そのため、mysql_real_escape_string関数を使用して、文字列区切り文字ではない単一引用符をエスケープする必要があります。 – Daan

関連する問題