【发布时间】:2010-01-05 16:27:26
【问题描述】:
我遇到了一个非常奇怪的问题。我不知道为什么它不起作用。我创建一个用户并获取 id 并在另一个表中插入基于该 id 的行。该行使用该 id 插入,但未插入该行的其他值!
$user_id = mysqli_insert_id($this->connection);
$query = "INSERT INTO selections
(user_id, language_id, country_id, region_id, city_id, gender_id, age_id, category_id)
VALUES ($user_id, 1, 1, 0, 0, 0, 20, 0)";
所以 user_id 被插入,而不是其他值(它们在表中都是 0)。我真的检查了这些列并删除了所有外键来调试这个问题。但我一点头绪都没有。
这些列都是 INT。奇怪的部分是有时当我用文字数字替换 $user_id 时它可以工作,有时它不会。但始终创建行。我已经检查了 $user_id 是一个整数。
我知道这是一个棘手的问题,它可能是由很多事情引起的,但我已经尝试解决这个小问题 3 个小时了。如果有人给我一些我可以做的事情来调试这个问题,那就太好了。
更新:即使我设置了默认值并只插入第一列(user_id),它也不起作用。其他所有字段都是 0。太奇怪了!
| selections | CREATE TABLE `selections` (
`user_id` int(11) NOT NULL,
`language_id` int(11) NOT NULL DEFAULT '1',
`country_id` int(11) NOT NULL DEFAULT '1',
`region_id` int(11) NOT NULL DEFAULT '0',
`city_id` int(11) NOT NULL DEFAULT '0',
`gender_id` int(11) NOT NULL DEFAULT '0',
`age_id` int(11) NOT NULL DEFAULT '0',
`category_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
$query = "INSERT INTO selections
(user_id)
VALUES ('$user_id')";
user_id显示178,其他字段为0:(
更新:
它在 sql 命令行中工作。但不是在 php.ini 中。但是mysqli没有产生错误,并且确实插入了行但是为什么其他字段是0?
回答:我的错。我有一个 jquery 脚本,将它改回 0 0 0 0 0 0 0。我的页面上有很多 AJAX,所以很难找到它......对不起,我的错!
【问题讨论】:
-
你能告诉我们 SHOW CREATE TABLE 选择的结果吗?在 MySQL 中?
-
您是否检查过
mysqli_query()或诸如此类的调用实际上成功? -
您是否尝试通过
( " .$userid . ",....附加用户ID? -
表中是否已经包含具有该 user_id 的行?
-
太奇怪了。即使我有默认值然后插入 user_id 它也不起作用。每个字段都是 0。