単純な ‘SELECTフィールドFROM table_name TO = “$ to”‘はMySQLエラー1064を返す

この問題は、私が数日間困惑してしまった。

私は次のようなMySQLテーブルを持っています:

+--------+------------+------------+-----------+-----------+-----------+
|   id   |   to       |  from      |question   | answer    |  time     |
+--------+------------+------------+-----------+-----------+-----------+
|        |            |            |           |           |           |
| type:  |type:       |type:       |type:      |type:      | type:     |
| int(11)|varchar(26) |varchar(26) |tinyint(3) |tinyint(3) | bigint(20)|
|        |            |            |           |           |           |
|        |            |            |           |           |           |

私は単純なSELECTを実行しようとしていますが、エラーが発生します。これは私がクエリを実行するために使用しているコードです:

$to = mysql_real_escape_string($_POST['to']);
$query = "SELECT to FROM table_name WHERE to = '$to'";
$result = mysql_query("$query") or die(mysql_error() ."|". mysql_errno());

これを実行しようとすると、これが返されます。

SQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文を使用して、
‘FROM table_name WHERE to =’ userOne ”を行1に使用してください。 1064

最後の1064は、エラーが関連付けられているMySQLエラー番号です。エラー1064は、ある種の解析エラーです(ソース:
http://dev.mysql.com/doc/refman/5.0/en/error-messages-server.html#error_er_parse_error
)しかし、私はこのエラーを引き起こす原因がわかりません。
また、エラーは、行1にエラーがありますが、この行は実際には私のコードの行68であることを示しています。私は、データベース内の他のテーブルの
SELECT * FROM other_table where name = "$ name"
のようなクエリを実行することができます。

この質問が正しく実行されない理由は何ですか?

ベストアンサー

この問題は、数日間私を困惑させてしまいました。

次回は数時間後に助けを求める:-)

MySQL予約語を確認してください。
toは予約語なので、フィールド名を変更するか、またはその前後のバッククックを使用する必要があります。

`to`

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です