我有一個小型的PHP應用程序,它應該允許用戶在XHTML Web表單中輸入一個4位數的年份,並返回比MySQL一個提供。這些年份存儲在db下的列yearPublished
。我有查詢工作,我得到沒有錯誤,但沒有數據被返回。在提供日期之前選擇所有MySQL數據
下面是用於創建數據庫的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
變量把所有的數據,其中yearPublished
低於$strBookPubYear
。我已經閱讀了多個教程,但他們都使用MySQL'Date'數據類型。在我的情況下,我正在使用文本數據類型。請不要告訴我使用mysqli,這個具體的項目並不要求我使用mysqli。
我試過這個,得到了同樣的結果......沒有什麼大聲笑 –
命令是否用CONVERT(yearPublished,SIGNED)工作? –
嘗試不同的錯誤塊,mysql_error()可能會產生一些更好的線索! –