【发布时间】:2015-10-05 14:37:17
【问题描述】:
我有一个包含来自设备的数据的文件,我需要将此数据插入数据库。文本文件如下所示:
10/01/15-20:37:30 = 40.2,25.4,42.3,54.3,70.0,66.6
10/01/15-20:38:26 = 67.3,18.4,30.6,39.3,70.0,66.6
10/01/15-20:39:21 = 74.5,16.8,28.2,36.0,70.0,66.6
10/01/15-20:40:16 = 76.8,16.6,27.6,35.2,70.0,66.6
10/01/15-20:41:12 = 78.1,16.4,27.3,34.9,70.0,66.6
我的代码目前看起来像这样:
<?php
$servername = "localhost";
$username = "root";
$password = "pass";
$dbname = "dbase";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
<?PHP
$file_handle = fopen("datalog.txt", "r");
while (!feof($file_handle) ) {
$line_of_text = fgets($file_handle);
$parts = explode(' ', $line_of_text);
print $parts[0] . $parts[1]. "<BR>";
}
$datainsert = "INSERT INTO reading (val1, val2, val3, val4, val5, val6, val7, val8, val9, val10) VALUES ($parts[0])";
if (mysqli_query($conn, $datainsert)) {
echo "New record created successfully";
} else {
echo "Error: " . $datainsert . "<br>" . mysqli_error($conn);
}
?>
<?php
$conn->close();
?>
我得到的错误是这样的:
错误:
INSERT INTO 读数(Box_ID、Time_Stamp、温度、湿度、CO_Level、VOC_Reading_UOM、VOC_Reading_V1、VOC_Reading_V2、VOC_Reading_V3、VOC_Reading_V4)VALUES () 列计数与第 1 行的值计数不匹配
我的数据库和站点确实连接没有错误,并且此页面是唯一有问题的页面。出了什么问题?
【问题讨论】:
-
通过查看该错误消息,您没有在 SQL 的
VALUES部分添加任何内容。检查$parts[0]是否包含您认为它包含的内容。 -
错误信息表明您没有在
VALUES ()中传递任何数据,因此查询当然会失败 -
我将 $parts [0] 放在值区域中,因为我认为这是代码从中提取信息的地方。如果您稍早看一下我的代码,您会看到 $parts = explode 然后它会将值拉出并将它们分开。所以我没有正确访问这些信息就是你的意思?
-
@graphicdesigner88 - 是的。如果失败,您将打印出您的 SQL 语句,并且那里的
VALUES()部分显示$parts[0]中没有任何内容;或者至少,不是你所期望的。尝试在循环之后添加var_dump($parts)以查看其中的内容。 -
array(1) { [0]=> string(0) "" } 是我添加 var_dump ($parts) 后出现的内容
标签: php mysql sql-server database database-connection