2017-04-04 15 views
0

以下のコードで構文を修正する方法を理解するのに苦労しています。Mysql構文エラーを選択してください

$key = 4; 
$column = "five_year"; 

$query_for_rate = "SELECT $column key FROM $usertable WHERE key=$key"; 

$get_rate = mysql_query($query_for_rate) or die(mysql_error()); 

echo $query_for_rate. "<br>"; 
echo $get_rate; 

if($get_rate){ 
while($row = mysql_fetch_array($get_rate)){ 

echo $row; 

    } 
} 

エラー:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'key FROM current_rates WHERE key=4' at line 1


回答いただきありがとうございます。クエリは現在動作していると思います。私が$ get_rateをエコーすると、私は "Resource id#5"を取得します。今私の問題は、結果を生み出すためにwhileループを取得できないことです。ありがとうございました!

+0

'key'は予約されています。あなたの列の名前を変更し、また 'select'の列をコンマで区切る必要がありますか、それをエイリアスにしようとしていますか? – chris85

+1

また、キーの前にコンマがありません。 –

+0

あなたは何か答えを受け入れるか、あなた自身で書くかもしれませんか? – holms

答えて

1

キーは予約語です。バッククォートで引用する必要があります。

$query_for_rate = "SELECT $column `key` FROM $usertable WHERE `key`=$key"; 

しかし、私はうまくいかないと思っていますが、代わりにこれを行う必要があります。

$query_for_rate = "SELECT $column `key` FROM $usertable WHERE `$column`=$key"; 

実際の列名を参照する必要があるため、エイリアスには何も表示されません。

+0

'$ column'!=' key'です。 – chris85

+0

彼が書いたことによると、$ columnはキーとしてエイリアス化されています。 – Augwa

+0

あなたは 'where'でカラムエイリアスを使うことはできません。そうしないとできません。http://stackoverflow.com/questions/8370114/referring-to-a-column-alias-in-a- where節OPを読むと、OPは 'five_year'と' key'を選択します。 – chris85

関連する問題