0

私のコードでは、ユーザーから Web ページを介して入力を受け入れ、ユーザーからの入力に基づいて where 句を動的に作成して SQL クエリを作成しようとしています。ただし、文字列を正しく連結できないようです。

$whereclause .= "AND niche ='".$niche."'";

$result = mysql_query("SELECT * FROM merc WHERE 1 = 1".$whereclause."") or die('Could not connect: ' . mysql_error());
4

2 に答える 2

1

クエリの作成中に SQL インジェクション状態を回避し、mysql の代わりにmysqliまたはPDO_mysqlを使用する必要があります。

次のクエリを試してください。

$result = mysql_query("SELECT * FROM merc WHERE 1 = 1 ".$whereclause."") or die('Could not connect: ' . mysql_error());

クエリにスペースがありませんでした。

于 2013-10-16T17:05:15.513 に答える
0

スペースがありません。

$whereclause = "AND niche = '".mysqli_real_escape_string($niche)."'";
$result = mysqli_query("SELECT * FROM merc WHERE 1 = 1 ".$whereclause") or die('Could not connect: ' . mysqli_error());

ユーザーからの入力を取得するときに、それが無傷で MySQL に渡されないことを確認してください。そうしないと、アプリケーションが多くの問題、特に SQL インジェクションに直面する可能性があります。また、mysql_* 関数は廃止されました。mysqli_* に移行することを強くお勧めします。

于 2013-10-16T16:39:12.243 に答える