我有一个文本(.txt
)文件,如下所示。
0 1 1 1 30 2014-08-30 14:38:40
1 1 1 1 30 2014-08-30 14:41:55
2 1 1 1 30 2014-08-30 14:47:54
3 1 1 1 30 2014-08-30 14:53:04
4 1 5 1 30 2014-10-02 14:29:42
我想将该文件中的一些数据插入数据库。这是staff_detail
table:
id(int32) primary key
no(int32)
staff_id(int32)
date_time(datetime)
所以,我从.txt
文件中读取数据并尝试插入数据库,如下所示:
<?php
include('dbconfig.php');
$handle = fopen($_FILES['record']['tmp_name'], "r");
while(!feof($handle)){
$row = fgets($handle);
if( strlen(trim($row)) > 0 ) {
$data = explode("\t",$row);
$no = $data[0];
$staff_id = $data[2];
$date = $data[6];
echo "No: $no | ID: $staff_id | Date: $date <br/>";
$query = "INSERT INTO staff_detail(`no`,`staff_id`,`date_time`)VALUES($no,$staff_id,$date)";
$rsl = mysql_query($query) or die(mysql_error());
}
}
?>
当我运行此文件时,我收到如下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
但是,我可以看到echo
中的所有数据,只是无法插入到数据库中。
当我在Firebug
中检查文本文件数据时。我看到的数据如下所示:
�0� �1� �1� � �1� �3�0� �2�0�1�4�-�0�8�-�3�0� �1�4�:�3�8�:�4�0�
�
�1� �1� �1� � �1� �3�0� �2�0�1�4�-�0�8�-�3�0� �1�4�:�4�1�:�5�5�
�
�2� �1� �1� � �1� �3�0� �2�0�1�4�-�0�8�-�3�0� �1�4�:�4�7�:�5�4�
�
�3� �1� �1� � �1� �3�0� �2�0�1�4�-�0�8�-�3�0� �1�4�:�5�3�:�0�4�
�
�4� �1� �5� � �1� �3�0� �2�0�1�4�-�1�0�-�0�2� �1�4�:�2�9�:�4�2�
�
�5� �1� �5� � �1� �3�0� �2�0�1�4�-�1�0�-�0�2� �1�4�:�3�7�:�4�4�
�
�6� �1� �7� � �1� �3�0� �2�0�1�4�-�1�0�-�0�2� �1�4�:�4�6�:�2�2�
�
�7� �1� �8� � �1� �3�0� �2�0�1�4�-�1�0�-�0�2� �1�4�:�4�7�:�5�6�
因此,当$no
值为0时,我尝试使用var_dump($no)
检查$no
。(我的意思是使用txt文件的第一行进行测试)。
我得到的结果如下:string(3) "0"
。我认为这是错误的,因为它只有一个字符串"0"
。但它显示string(3)
。
所以,我猜它可能是空格,所以我尝试使用str_replace
并将$no
和$staff_id
类型更改为int
并尝试再次插入表格。
但它显示了同样的错误,我一直坚持这个问题。现在,我不知道要解决它。我非常感谢任何答案和建议。