2012-02-22 15 views
0

データベース結果に基づいて文字列にラベルを付けることを検討しています。私は次のコードを持っています:mysql_query()から適切なPHP文字列結果が得られません

$loc1 = "A"; 
$query = "SELECT loc FROM User where nick='".$users[$j]."'"; 
    $loc = mysql_query($query); 
    if($loc == 1) 
     $loc1 = "A"; 
    if($loc== 2) 
     $loc1 = "B"; 

loc1の位置は常に "A"です。私はこのクエリがMySQLで動作することを確認しました。なぜこの単純なケースが機能していないのかを理解するのが難しいです。私はあなたの助けに感謝します!

+2

'$のloc'であるMySQLリソースとmysqlのないデータは、[するmysql_query()のドキュメント]で使用例をご覧ください – Poonam

+0

(http://php.net/manual/en/function.mysql- query.php)。 –

答えて

4

ファンクションmysql_queryは、フェッチされたカラムの値を返しません。代わりに、クエリによって返されたカラム値を抽出するために使用するMySQLリソースを返します。

変更:

$loc = mysql_query($query); 

へ:

$result = mysql_query($query); 
if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 
if ($row = mysql_fetch_assoc($result)) { 
    $loc = $row["loc"]; 
} 
2

あなたは資源である$のLOCでするmysql_query()の戻り値を格納しています。

SELECT、SHOW、DESCRIBE、EXPLAINおよびその他の文が結果セットを返す場合、mysql_query()は成功した場合はリソースを返し、エラーの場合はFALSEを返します。

ので、$のLOCは1ではないか、どちらがあなたがリソースを操作するためには、mysql_fetch_array/mysql_fetch_object、などを使用する必要があります。2.

に等しいです。

1

あなたはは、mysql_fetch_rowと例#1のフェッチ1行()

<?php 
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'"); 
if (!$result) { 
    echo 'Could not run query: ' . mysql_error(); 
    exit; 
} 
$row = mysql_fetch_row($result); 

echo $row[0]; // 42 
echo $row[1]; // the email value 
?> 

は例のmysql_fetch_row

、でレコードセットをフェッチしかし、SQLインジェクション攻撃に注意しなければなりません!

http://es.php.net/manual/en/security.database.sql-injection.php

+0

警告ありがとうございます+1! –

関連する問題