【发布时间】:2011-04-25 19:51:45
【问题描述】:
我正在尝试从 XLS 文件中获取数据并将其转储到 mySQL 数据库中。
我找到了一个 php 文件,该文件将获取 XLS 的内容并将它们作为表格数据显示在网页上。我已尝试修改此代码以将我的数据插入数据库。
这是完成这项工作的函数 - 我一直在尝试修改:
function dumpSQL($row_numbers=false,$col_letters=false,$sheet=0) {
$xlsData = '';
for($row=1;$row<=$this->rowcount($sheet);$row++) {
$rowheight = $this->rowheight($row,$sheet);
for($col=1;$col<=$this->colcount($sheet);$col++) {
if(!$this->sheets[$sheet]['cellsInfo'][$row][$col]['dontprint']) {
// cell value
//$val = $this->val($row,$col,$sheet);
$xlsData[$row][$col] = $this->val($row,$col,$sheet);
}
}
}
// Make a MySQL Connection
mysql_connect("*******", "******", "*******") or die(mysql_error());
mysql_select_db("***********") or die(mysql_error());
$sql = "INSERT INTO BEER_LOCATIONS (LOCATION_NAME, LOCATION_STREET, LOCATION_CITY, LOCATION_STATE, LOCATION_ZIPCODE, LOCATION_PHONE, BEER_STYLE ) VALUES ($xlsData)";
$result = mysql_query("
$sql
") or die(mysql_error());
}
运行此代码时出现以下错误: 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以了解正确的语法
我也试过去掉获取多维数组的部分,只建一个静态版本:
$xlsData[0][0] = "Hello World";
$xlsData[0][1] = "38380 - Thirteen Coins-Boren";
$xlsData[0][2] = "125 Boren Ave N";
$xlsData[0][3] = "Seattle";
$xlsData[0][4] = "WA";
$xlsData[0][5] = "98109";
$xlsData[0][6] = "2066822513";
$xlsData[0][7] = "34740 - Georgetown Keg - 1/2 Manny Pale";
$xlsData[1][0] = "Hello World";
$xlsData[1][1] = "38380 - Thirteen Coins-Boren";
$xlsData[1][2] = "125 Boren Ave N";
$xlsData[1][3] = "Seattle";
$xlsData[1][4] = "WA";
$xlsData[1][5] = "98109";
$xlsData[1][6] = "2066822513";
$xlsData[1][7] = "34740 - Georgetown Keg - 1/2 Manny Pale";
$xlsData[2][0] = "Hello World";
$xlsData[2][1] = "38380 - Thirteen Coins-Boren";
$xlsData[2][2] = "125 Boren Ave N";
$xlsData[2][3] = "Seattle";
$xlsData[2][4] = "WA";
$xlsData[2][5] = "98109";
$xlsData[2][6] = "2066822513";
$xlsData[2][7] = "WA";
$xlsData[3][0] = "Hello World";
$xlsData[3][1] = "86036 - Aafes Ft Lewis Class Vi";
$xlsData[3][2] = "Bldg 2202";
$xlsData[3][3] = "Fort Lewis";
$xlsData[3][4] = "WA";
$xlsData[3][5] = "98433";
$xlsData[3][6] = "2539644128";
$xlsData[3][7] = "42624 - Georgetown Keg - 1/4 Manny Pale";
我最终遇到了同样的错误。
我尝试在将数据插入数据库之前对其进行序列化:
$xlsData = serialize($xlsData);
感谢您的帮助。
我在实现 mysql_real_escape_string() 时遇到问题。似乎它需要环绕 implode(),但是当我尝试这样做时出现错误。
$sql = "INSERT INTO BEER_LOCATIONS (LOCATION_NAME, LOCATION_STREET, LOCATION_CITY, LOCATION_STATE, LOCATION_ZIPCODE, LOCATION_PHONE, BEER_STYLE ) VALUES ('" . mysql_real_escape_string(implode("', '", $row)) . "')";
当我尝试这样做时,我得到了这个错误: 列数与第 1 行的值数不匹配
再次感谢。
【问题讨论】:
-
这实际上不是您要执行的序列化。序列化是当您转换对象/数组/等时。到一个字符串,这样你就可以在不丢失结构的情况下存储它。当您在数据库中存储一组值时,您实际上只是在调整它们以适应数据库结构。
-
感谢有关序列化的提示。我删除了该代码。
-
您看到我的回答是否适合您了吗? :)
标签: php mysql serialization multidimensional-array