- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要读取Excel数据并保存到数据库中,但遇到了以下问题:
Excel格式:
我需要将数据保存在数据库中,但问题是在消息列中某些列以 [1/2-PNR] 开头,这意味着它有一条很长的消息,分为两部分,如 [2/2 -PNR]
但是该消息需要保存在单列中
与[1/3-ADF]消息相同,即消息分为三部分,需要以单列形式保存在数据库中
我尝试使用下面的代码保存数据,但无法执行此操作。
我用这个zip文件读取excel https://code.google.com/p/php-excel-reader/downloads/detail?name=php-excel-reader-2.21.zip
<?php
//error_reporting(0);
$host="localhost";
$username="root";
$password="";
$db_name="abro";
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select db");
ini_set("display_errors",1);
error_reporting(0);
require_once 'excel_reader2.php';
$date=date('d-M-Y',strtotime("-1 days"));
$actual_file=$date.".xls";
$xls = new Spreadsheet_Excel_Reader($actual_file);
$success=0;
for ($row=1;$row<=$xls->rowcount();$row++)
{
$mobile_no=$xls->val($row,1);
$party_name=$xls->val($row,2);
$message=$xls->val($row,3);
if($row==1)
{
}
else{
$query="insert into party_excel set
party_name='".mysql_real_escape_string($party_name)."',
message='".mysql_real_escape_string($message)."',
moble_no='".mysql_real_escape_string($mobile_no)."'
";
$query_run=mysql_query($query);
echo mysql_error();
$success++;
}
}
if($success>0)
{
echo "file imported successfully";
}
其实这张表是用来保存短信的。如果 SMS 超过 160 个字符,则剩余的消息将保存在下一行。但是当我显示消息时,我想在同一行上显示消息。
最佳答案
最初,由于图像难以阅读,我认为消息中的列数与部分数一样多,但我现在意识到,行数与消息的部分数一样多。
我认为最好的方法是用 PHP 处理数据,如下所示:
$part = 1;
$parts = 1;
for ($row=2; $row<=$xls->rowcount(); $row++) {
$mobile_no=$xls->val($row,1);
$party_name=$xls->val($row,2);
if ($part < $parts) { // need to merge rows
$message = $message . $xls->val($row,3);
$part++;
}
else { // a new message
$message = $xls->val($row,3);
$pattern = "/^\[()\/()-" . $party_name . "\]/";
$part = 1;
if (preg_match($pattern, $message, $matches)) {
$parts = $matches[2];
}
else $parts = 1;
}
if ($part == $parts) { // completed a message
$query="insert into party_excel set
party_name='".mysql_real_escape_string($party_name)."',
message='".mysql_real_escape_string($message)."',
moble_no='".mysql_real_escape_string($mobile_no)."'
";
$query_run=mysql_query($query);
echo mysql_error();
$success++;
}
}
由于您被丢弃了第 1 行,因此我已将您的循环调整为从第 2 行开始。我已按原样合并了多部分消息,即,我没有删除 [1/2-SJF] 指示器。
另外,我宁愿将行输出到 CSV,然后使用 LOAD DATA INFILE 通过 mysql 本身一次性插入所有行:http://dev.mysql.com/doc/refman/5.1/en/load-data.html
免责声明:此代码尚未经过测试,特别是仔细检查 $pattern。
关于php - 如何连接来自不同行的单行列中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27754580/
在我的 android 应用程序中,我想在同一行中实现 2 个文本字段。如果文本太长可以转到下一行。所以我使用了更精简的水平布局并添加了 2 个文本字段。 [例如:TextView1、TextV
由于node使用了javascript,它可以充当webrtc peer吗? 然后我可以将它编码为 VP8 流并广播给所有其他对等方吗? 最佳答案 WebRTC 是一个浏览器 API 而不是 Java
我是一名优秀的程序员,十分优秀!