1

ユーザーがデータベースに存在するかどうかを確認するこのコードがあります。$account存在する場合と存在しない場合1に割り当てたい。0このコードは機能すると思いましたが、常に設定$accountされて0いるため、トリックが足りないと思います。どんな助けでも大歓迎です。

$con = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");

 if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

mysql_select_db(DB_NAME, $con);

$sql="SELECT user_name FROM users";

$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
if ($row['user_name'] == '$user_name'){
$account = 1;
}else{
        $account = 0;}

ありがとう

4

4 に答える 4

3

You can't put variables in a string if you use single quotes ' (plus it's not necessary!). Below rectifies that issue, and shortens your if/else statement into a one-liner.

$account = $row['user_name']==$user_name ? 1 : 0;
于 2012-07-06T22:33:56.147 に答える
2

これはもっと良い方法でできると思います:

$con = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Couldn't make connection.");

 if (!$con)
 {
 die('Could not connect: ' . mysql_error());
 }

mysql_select_db(DB_NAME, $con);

$account = (int)mysql_query("SELECT COUNT(*) FROM Users WHERE user_name='$user_name'");

これにより、アカウントに正しい値が格納されます。つまり、ユーザーが見つかった場合は 1、見つからなかった場合は 0 です。

于 2012-07-06T22:40:58.940 に答える
1

クエリで複数の行が返されており、最初の行との比較を行っています。単一のユーザーを指定するには、次のようなことを行う必要があります (SQL ステートメントの変更を参照)。

$sql="SELECT user_name FROM users WHERE user_name='".$user_name."' ";

$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);
if ($row['user_name'] == '$user_name'){
$account = 1;
}else{
        $account = 0;}

また、行を反復するには、http : //php.net/manual/en/function.mysql-fetch-assoc.phpからこの例を参照できます。

while ($row = mysql_fetch_assoc($result)) {
    echo $row["userid"];
    echo $row["fullname"];
    echo $row["userstatus"];
}
于 2012-07-06T22:38:32.920 に答える
1

変化する:

if ($row['user_name'] == '$user_name'){

に:

if ($row['user_name'] == $user_name){

一重引用符は文字列を意味します。したがって、変数を単一引用符で囲むことにより、($user_name 変数内の文字列ではなく、STRING "$user_name")に一致$row['user_name']させようとしています。$user_name

二重引用符も文字列を意味しますが、変数を二重引用符で囲むことができ、 (変数内の文字列)$row['user_name']と一致し$user_nameます。

したがって、次の 2 つの例は正しく、あなたの例は正しくありません。

if ($row['user_name'] == $user_name){
if ($row['user_name'] == "$user_name"){
于 2012-07-06T22:43:09.803 に答える