这让我快疯了。我有一个Items表(PK item_id)。每个项都属于一个类别,因此表中的一个字段是category_id。下面是我用来调试这个的简化SQL:
SELECT * FROM Items WHERE category_id = '?'
我要替换?使用类别ID进行手动调试。表中有5项id的1,2,3,4,5。下面是它变得奇怪的地方。
H 113的结果中,如果我将数据库中的项目1更改为具有不同的类别ID,例如,它仍然不会在结果中显示。
这是怎么回事?第1项和第1项无论如何都不会出现,如果给出17的类别,其他类别就不会出现,否则会出现吗?它适用于phpMyAdmin,但不适用于PHP?
下面是测试这一点的PHP代码:
$query = mysql_query("SELECT * FROM `Items` WHERE `category_id` = '17'");
while ($r = mysql_fetch_assoc($query))
{
echo $r['item_id'];
}这是SHOW CREATE TABLE Items
CREATE TABLE `Items` (
`item_id` int(11) NOT NULL default '0',
`description` varchar(250) default NULL,
`name` varchar(25) default NULL,
`category_id` int(11) default NULL,
PRIMARY KEY (`item_id`),
UNIQUE KEY `item_id` (`item_id`),
KEY `FK_Items_Categories` (`category_id`),
CONSTRAINT `FK_Items_Categories` FOREIGN KEY (`category_id`) REFERENCES `Categories` (`category_id`),
) ENGINE=InnoDB DEFAULT CHARSET=latin1和类别:
CREATE TABLE `Categories` (
`category_id` int(11) NOT NULL auto_increment,
`parent_id` int(11) default NULL,
`name` varchar(25) default NULL,
PRIMARY KEY (`category_id`),
KEY `FK_Categories_Categories` (`parent_id`),
CONSTRAINT `FK_Categories_Categories` FOREIGN KEY (`parent_id`) REFERENCES `Categories` (`category_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=latin1注意:我没有创建数据库,所以如果有问题请告诉我。
发布于 2012-04-01 20:40:42
闻起来您的脚本和phpmyadmin不使用相同的数据库。重复检查是否有生产/开发数据库。
再次检查您正在运行的脚本,将die('im here');放在查询行的前面。
发布于 2012-04-01 20:44:46
试一试
$query = mysql_query("SELECT * FROM Items i, Categories c WHERE i.category_id = '17' AND i.category_id = c.category_id");https://stackoverflow.com/questions/9968049
复制相似问题