PHP,MYSQL记录未插入

PHP,MYSQL记录未插入,php,mysql,Php,Mysql,我有两个mysql表: -- -- Table structure for table `body` -- DROP TABLE IF EXISTS `body`; CREATE TABLE IF NOT EXISTS `body` ( `bChar` bigint(10) NOT NULL, `bPart` bigint(10) NOT NULL, `bStr` int(3) NOT NULL, `bDur` int(3) NOT NULL, `bItem` bigint(10) NOT N

我有两个mysql表:

--
-- Table structure for table `body`
--

DROP TABLE IF EXISTS `body`;
CREATE TABLE IF NOT EXISTS `body` (
`bChar` bigint(10) NOT NULL,
`bPart` bigint(10) NOT NULL,
`bStr` int(3) NOT NULL,
`bDur` int(3) NOT NULL,
`bItem` bigint(10) NOT NULL,
`bHealth` int(3) NOT NULL,
`bSpd` int(3) NOT NULL,
`bMaxDur` int(3) NOT NULL,
`bCurse` int(1) NOT NULL,
`bAct` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Table structure for table `partybody`
--

DROP TABLE IF EXISTS `partybody`;
CREATE TABLE IF NOT EXISTS `partybody` (
`pabChar` bigint(10) NOT NULL,
`pabPart` bigint(10) NOT NULL,
`pabStr` int(3) NOT NULL,
`pabDur` int(3) NOT NULL,
`pabItem` int(10) NOT NULL,
`pabHealth` int(3) NOT NULL,
`pabAct` int(1) NOT NULL,
`pabNum` int(4) NOT NULL,
`pabSlot` int(1) NOT NULL,
`pabSpd` int(3) NOT NULL,
`pabMaxDur` int(3) NOT NULL,
`pabCurse` int(1) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
以下是正文中的数据:

(0, 25, 0, 0, 0, 120, 0, 0, 0, 1)   
我有以下php代码:

$query = "SELECT * FROM body WHERE bChar = ".$_SESSION['chNum'];
$result2 = mysql_query($query, $_SESSION['connect']) or die("Error 3:".mysql_error());
while($row2 = mysql_fetch_array($result2)) {
   query = "INSERT INTO partybody VALUES(".$_SESSION['chNum'].",".$row2['bPart'].",".$row2['bStr'].",".$row2['bDur'].",".$row2['bItem'].",".$row2['bHealth'].",1,1,1,".$row2['bSpd'].",".$row2['bMaxDur'].",".$row2['bCurse'].")";
  mysql_query($query, $_SESSION['connect']) or die("Error 4a:".mysql_error());
}
我刚刚将
$row2['bCurse']
添加到
插入
中,并将错误消息从错误4:更改为错误4a:但当我执行程序时,我得到以下信息:

Error 4:Column count doesn't match value count at row 1. 

我试着清理我的缓存,但没用。想法?

如果数据库仍然只填充了测试数据,您可以输出所有查询字符串,并直观地检查是否有问题。查找可能如下所示的查询部分
number,,number

$query = "SELECT * FROM body WHERE bChar = ".$_SESSION['chNum'];
var_dump($query);
$result2 = mysql_query($query, $_SESSION['connect']) or die("Error 3:".mysql_error());
while($row2 = mysql_fetch_array($result2)) {
   query = "INSERT INTO partybody VALUES(".$_SESSION['chNum'].",".$row2['bPart'].",".$row2['bStr'].",".$row2['bDur'].",".$row2['bItem'].",".$row2['bHealth'].",1,1,1,".$row2['bSpd'].",".$row2['bMaxDur'].",".$row2['bCurse'].")";
   var_dump($query)
   //mysql_query($query, $_SESSION['connect']) or die("Error 4a:".mysql_error());
}
顺便说一句,
query
前面缺少的美元符号是下一行的打字错误吗

query = "INSERT INTO partybody VALUES(".$_SESSION['chNum'].",".$row2['bPart'].",".$row2['bStr'].",".$row2['bDur'].",".$row2['bItem'].",".$row2['bHealth'].",1,1,1,".$row2['bSpd'].",".$row2['bMaxDur'].",".$row2['bCurse'].")";

回显您的查询并在数据库中运行,以查看您的查询中是否存在任何问题。上面的“party body”表有10列,您正试图通过您的查询(上面)向其中插入接近12个值。它将如何工作?@逼真性更仔细地查看代码。他不仅仅是将数据从一个表移动到另一个表,而是在第二个表中插入新记录之前添加一些额外的数据。因此,他的查询是完全合法的。我猜在您的sql注入风险rife查询的某个地方,一些值没有显示出来,因此有空值,因此有像
0、、、、、1
这样的值。我建议在执行查询之前打印出您正在生成的查询,或者作为错误的一部分,这样您就可以看到实际发送到SQL的是什么,而不是您认为是什么。哦,如果可能的话,停止使用mysql_*-如果可以的话,使用mysqli编写的语句。问题解决了,另一个脚本在事件发生后把事情搞砸了,它刚好有相同的错误代码。缺少的$是一个拼写错误,代码中的它是正确的。我在插入后尝试了var_dump($query),但它没有转储任何内容。奇怪的是,为什么错误消息仍然在说“错误4:”即使我注释掉了那段代码?你绝对确定你正在执行正确的脚本/代码吗?尽我所能确定,有什么方法可以告诉你吗?我知道它运行的是正确的脚本,因为我放了一个var_dump(get_defined_vars());刚开始的时候,它倒了出来