尝试在 MySQL 表中插入单行时出现“数据对列而言太长”错误。我知道数据库设置正确,因为我可以毫无问题地以其他方式插入相同的数据。以下是代码的基本部分。如果您想查看任何函数的完整代码而不是伪代码,我很乐意发布 - 只是为了避免混乱。
输出如下:
连接到 MySQL
连接到数据库 dublin
第 1 行的列“gpsMin”数据太长
测试索引.php
include 'parseData.php';
parseAll("dublin");
解析数据.php
function parseAll($sitename){
function pullAndDelete($filename){} #reads data from file, deletes file
$data = pullAndDelete($sitename);
function parse($str){} #extracts first piece of data from data string
function chop2($str){} #removes 2 chars from front of string
function chop14($str){} #removes 14 chars from front of string
#$data is put through parse and chop functions several times -
#take first piece of data, chop it off, take new first piece, chop again, etc.
#Function calls up through relevant one:
$radio=parse($data);
$short1=chop14($data);
$antenna=parse($short1);
$short2=chop14($short1);
$gpsmaj=parse($short2);
$short3=chop14($short2);
$gpsmin=parse($short3);
此时,调用 strlen() 函数的 echo'ed 产生以下输出:
Radio: 0 Strlen: 1
Antenna: 0 Strlen: 1
GPS Major: 0 Strlen: 1
GPS Minor: 0 Strlen: 1
function writeToDB($site, $a, $b, $c, $d, $e, $f, $g, $h, $b1, $b2, $temp, $d, $t)
{
mysql_connect(xxx,xxx,xxx) or die(mysql_error());
echo "Connected to MySQL<br />";
mysql_select_db("scada") or die(mysql_error());
echo "Connected to table ".$site."<br />";
mysql_query("INSERT INTO ".$site." (radio, antenna, gpsMaj, gpsMin, acpwr,
generator, blank1, blank2, battery1, battery2, temperature, date, time)
VALUES($a, $b, $c, $d, $e, $f, $g, $h, $b1, $b2, $temp, $d, $t)")
or die(mysql_error());
echo "Data inserted into table ".$site;
}
writeToDB($sitename, $radio, $antenna, $gpsmaj, $gpsmin, $acpwr, $generator,
$blank1, $blank2, $batt1, $batt2, $temperature, $mysqldate, $mysqltime);
} #end parseAll()
所以 db 设置正确,strlen() 函数告诉我数据的长度是正确的。我看不到任何东西以任何方式添加到其中,前三个(收音机、天线、gpsmaj)很好。我在一个名为 dbconnector.php 的文件中有这个函数的另一个版本,它运行良好。我找不到两者之间的区别。
提前致谢!
编辑:
列数据类型是二进制。
var 值为 0。
显示创建表都柏林;
CREATE TABLE dublin
(
idsiteData
int(11) NOT NULL AUTO_INCREMENT,
radio
binary(1) DEFAULT NULL,
antenna
binary(1) DEFAULT NULL,
gpsMaj
binary(1) DEFAULT NULL,
gpsMin
binary(1) DEFAULT NULL,
acpwr
binary(1) DEFAULT NULL,
`gener.. .
“gpsmin”上的 Vardump 显示了这一点:
字符串(1)“0”
不确定我是否正确执行了第二个 vardump,但这是最后一行,后面是一堆“未定义的变量”错误:
字符串(157)“插入(无线电,天线,gpsMaj,gpsMin,acpwr,发电机,空白1,空白2,电池1,电池2,温度,日期,时间)值(,,,,,,,,,,,,,,,,,)”