2

1 つのデータベースに 2 つのテーブルがあります。

id | title
---------           // table name is tableone
1  |  a
2  |  b
3  |  c
4  |  d
5  |  a
6  |  b
7  |  c
8  |  d

最初のテーブルの主キーは ID 列です。このテーブルから、PHP を使用して正常に動作する HTML テーブルを作成しています。

2番目のテーブル

id | version
---------
a  |  1
b  |  3
c  |  6
d  |  7

最初のテーブルのwhileループで、タイトルの値を次のように定義しました

$title = $id['title'];

while ループ内で別の while ループを使用していますが、今回は定義済みのタイトルを使用して、次を使用して 2 番目のテーブルの一致する ID の対応するバージョン行の値にアクセスしようとしています。

mysql_query("SELECT version FROM tableone WHERE ID=".$title)

しかし、私はエラーでほのめかされています

'where 句' の列 'a' が不明です

何が問題で、どうすれば修正できますか?

4

2 に答える 2

2

次のように $title を引用符で囲む必要があります。

mysql_query("SELECT version FROM tableone WHERE ID='".$title."'")

ユーザー提供の入力がある場合は、すべてのケースでコードが安全であることを確認する必要があります。

この投稿には、それに関するいくつかの良い情報があります: https://stackoverflow.com/questions/3714107/php-mysql-security-checklist-the-definitive-practical-guide

于 2012-10-12T21:36:07.357 に答える
1

ループ内で個別のクエリを実行する代わりに、結合を使用して1つのクエリですべての情報を取得する方がよい場合があります。

SELECT t1.id AS id, title, version
FROM tableone t1
JOIN tabletwo t2 ON t1.title = t2.id
于 2012-10-12T21:42:00.103 に答える