列不明エラーの原因となっている非常に基本的な選択ステートメントがあります。変数で数字だけでなく文字を使用しようとすると、クエリの問題が発生します。照合と関係があるのだろうか。
これが私がこれまでに持っているものです:
$titleno=$_REQUEST['title_no'];
$titleno=mysql_real_escape_string($titleno);
$titleno = utf8_decode($titleno); //tried without this before but didn't work
$query="SELECT * FROM `Titles` WHERE `title-no` = '".$titleno."'";
//tried various versions of this query - left it as single quotes as that seems to be the correct way. This only fails when a character is entered. Numbers work fine.
echo "query - <br> $query <br>";
$get_title_result=mysql_query($query) or die(mysql_error());
//here I get the unknown column name error - MySQL treats the titleno as the column name
エコー出力:
SELECT * FROM `Titles` WHERE `title-no` = '1234566d'
Unknown column '1234566d' in 'where clause'
title-no に 'd' を使用しなかった場合、正常に動作します....また、ハイフンを含まない別の列名を試しても、同じ動作が得られます。DB は、title-no の照合を latin1_swedish_ci として定義します。(クエリを mysqladmin に貼り付けた場合、この問題は発生しません)
テーブル定義は次のとおりです。
CREATE TABLE `Titles` (
`id` int(11) NOT NULL auto_increment,
`title-no` varchar(15) NOT NULL,
UNIQUE KEY `title-no` (`title-no`),
KEY `id` (`id`)
) ENGINE=MyISAM
AUTO_INCREMENT=9090949 DEFAULT CHARSET=latin1 AUTO_INCREMENT=9090949 ;
解決済み:問題はこのクエリにはありませんでした。後続のクエリでした。このクエリをエコーするだけだったので、混乱しました。私の悪い。ご支援いただきありがとうございます!:)