【发布时间】:2012-11-04 03:22:08
【问题描述】:
我正在从 ebay 抓取 xml 数据并将结果放入 MySQL,抓取数据工作正常,但是由于几个 xml 标记值的整数值不正确,输入到数据库失败。
xml 标记值是单词“true”(不带引号),这是 db sql:
CREATE TABLE ebay_categories (
CategoryID int(10) NOT NULL default '0',
CategoryLevel int(5) NOT NULL default '0',
CategoryName varchar(120) NOT NULL default '',
CategoryParentID int(10) NOT NULL default '0',
LeafCategory int(1) NOT NULL default '0',
AutoPayEnabled int(1) NOT NULL default '0',
Expired int(1) NOT NULL default '0',
IntlAutosFixedCat int(1) NOT NULL default '0',
Virtual int(1) NOT NULL default '0',
LSD int(1) NOT NULL default '0',
ORPA int(1) NOT NULL default '0',
PRIMARY KEY (CategoryID),
KEY catlevel (CategoryLevel),
KEY parent (CategoryParentID),
KEY ape (AutoPayEnabled),
KEY expired (Expired),
KEY IAFC (IntlAutosFixedCat),
KEY virtual (Virtual),
KEY lsd (LSD),
KEY orpa (ORPA),
KEY leaf (LeafCategory)
) TYPE=MyISAM;
我尝试过 int、tinyint、Boolean(诉诸 tinyint)无济于事,但仍然遇到此问题。数据库连接没有问题,因为我使用 varchar 作为 LeafCategory 和其他的 int 类型进行了测试,一切正常。
在插入 db 之前,如果不通过正则表达式进行搜索和替换,我可以做些什么吗?
编辑:
$query = "INSERT INTO `ebay_categories` (`CategoryID`, `LeafCategory`)VALUES ('$xmlCategoryID', '$xmlLeafCategory')";
if (mysqli_query($link, $query)) {
echo "Successfully inserted " . mysqli_affected_rows($link) . " row";
} else {
echo "Error occurred: " . mysqli_error($link);
}
从客户端代码中解包出来的 SQL 语句是:
INSERT INTO `ebay_categories`
(`CategoryID`, `LeafCategory`)
VALUES
('$xmlCategoryID', '$xmlLeafCategory')";
【问题讨论】:
-
不清楚问题出在哪里,因为您不知道您从 xml 数据生成了什么 SQL 插入语句。我最初的猜测是您尝试将 TRUE 作为文字插入,它等于整数值 1。但如果是这种情况,它应该可以正常工作,即使您将其粘贴到 varchar 列中也是如此。所以我现在认为您正在尝试将“TRUE”(带引号的字符串)插入整数列。如需更好的帮助,请发布更好的信息(INSERT 语句)
-
抱歉,已编辑原始帖子以显示查询,谢谢
-
我不明白这个
NOT NULL default '0' -
不是'0'的默认值是假的,'true'应该返回为1吗?..这就是我从我所读到的理解它
标签: mysql insert integer tinyint