私は、ユーザーが 4 桁の年を XHTML Web フォームに入力し、MySQL データベースに保存されているすべての情報を、提供された年よりも低い年で返すことを可能にする小さな PHP アプリケーションを持っています。年は列の下のデータベースに保存されますyearPublished
。クエリは機能しており、エラーは発生しませんが、データが返されません。
データベースを作成するための SQL ファイルは次のとおりです。
CREATE TABLE IF NOT EXISTS `books` (
`ISBN` char(13) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
`title` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`author_firstName` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`author_lastName` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`genre` varchar(35) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`publisher` varchar(40) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`yearPublished` varchar(4) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
`price` float DEFAULT '0.0',
PRIMARY KEY (`ISBN`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
クエリを実行する PHP コードは次のとおりです。
if(isset($_POST['submitForm'])) {
$strBookPubYear = $_POST['pubYear'];
if(empty($strBookPubYear)) {
print("<p class='error'>You must enter a 4 digit publication date!</p>\n");
} else {
if(!is_numeric($strBookPubYear)) {
print("<p class='error'>The publication date must be numeric.</p>\n");
} else {
if(!(strlen($strBookPubYear) === 4)) {
print("<p class='error'>The Publication date must be exactly 4 characters long.</p>\n ");
} else {
$sqlQuery = mysql_query("SELECT yearPublished FROM books WHERE yearPublished < '$strBookPubYear'");
if($sqlQuery === false) {
print("<p class='error'>Could not execute the query, please try again.</p>\n");
} else {
が より小さい$sqlQuery
すべてのデータを取得するはずの変数に注意してください。これについて複数のチュートリアルを読みましたが、それらはすべて MySQL の「日付」データ型を使用しています。私の場合、テキスト データ型を使用しています。mysqli を使用するように言わないでください。この特定のプロジェクトでは、mysqli を使用する必要はありません。yearPublished
$strBookPubYear