0

SQL ステートメントに単純な構文の問題があると思います。このコードを実行すると、データベース クエリでエラーが発生します。

$user = $_GET['linevar'];
echo $user;  // testing - url variable echos correctly
$sql = "SELECT * FROM `userAccounts` WHERE `name` = $user";
$result = mysql_query($sql) or die("Error in db query");

文字列をテーブル内の既知のレコードまたは既知のレコードに置き換える$userと、コードは正常に機能します。SQL 文字列で変数を間違って使用していませんか?$sql'actualName'$

4

3 に答える 3

1

これはうまくいくはずです:

$sql = "SELECT * FROM `userAccounts` WHERE `name` = '" . $user . "'";
于 2012-07-05T14:42:13.647 に答える
1

$userおそらく数値ではないため、取得する値を引用符で囲む必要があります。

$sql = "SELECT * FROM `userAccounts` WHERE `name` = '$user'";

注意として、このコードは SQL インジェクションの影響を受けやすいため、SQL インジェクションについても読む必要があります。修正は、それを渡すことmysql_real_escape_string()です:

$user = mysql_real_escape_string( $_GET['linevar']);

or die();次のように、何か問題が発生したときにエラー メッセージを表示するために、ロジックをもう少し有益なものに置き換えることもできます。

or die("Error in db query" . mysql_error());
于 2012-07-05T14:41:20.343 に答える
1

get 入力をエスケープしてから引用する必要があります。

// this is important to prevent sql injection.
$user = mysql_real_escape_string($_GET['linevar']);

$sql = "SELECT * FROM `userAccounts` WHERE `name` = '$user'";
于 2012-07-05T14:43:11.040 に答える