准备语句使用PHP向mysql添加空行

时间:2017-12-01 00:05:03

标签: php mysql

我准备好的陈述让我有点迷茫。我的目标是将一个简单的小csv文件(100行和大约10列)读入mysql数据库。 由于我无法实现这一点,我现在将mysql表简化为一列(OrderUuid)。代码的第一部分我硬编码了我的OrderUuid变量的testvalue,它被添加到mysql中。但是,当我从csv文件(行[0])获取列值时,没有任何东西(我认为是一个空字符串)被添加到db表中。

这是我的代码:

while(($line = fgetcsv($csvFile)) !== FALSE){

            //This works!
            $OrderUuid = "Test";
            $insertQry2 = $conn->prepare("INSERT INTO orders_test (OrderUuid) VALUES (?)");
            $insertQry2->bind_param("s", $OrderUuid);
            if(!$insertQry2->execute()){trigger_error("there was an error....".$conn->error, E_USER_WARNING);}

            //This doesn't
            $OrderUuid = $line[0];
            echo $OrderUuid."<br>"; //Returns something like: d17e91d5-63b9-4a56-a413-3274057073c7
            $insertQry3 = $conn->prepare("INSERT INTO orders_test (OrderUuid) VALUES (?)");
            $insertQry3->bind_param("s", $OrderUuid);
            if(!$insertQry3->execute()){trigger_error("there was an error....".$conn->error, E_USER_WARNING);}
 }

任何帮助将不胜感激! 谢谢! 规范

编辑1: 感谢所有提示家伙!我重写了代码,但不幸的是脚本仍在我的表中插入空字符串。没有任何错误消息。

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$flag = true;
$data = array();
while(($line = fgetcsv($csvFile)) !== FALSE){
    if($flag) { $flag = false; continue; }
    $data[] = $line;
}

if (!($stmt = $conn->prepare("INSERT INTO orders_test (OrderUuid) VALUES (?)"))) {
     echo "Prepare failed: (" . $conn->errno . ") " . $conn->error;
}

if (!$stmt->bind_param("s", $data[0][0])) {
    echo "Binding parameters failed: (" . $stmt->errno . ") " . $stmt->error;
}

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

foreach($data as $dat) {
    if (!$stmt->execute()) {
        echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
    }
}

这是我的超级简单表格:     CREATE TABLE orders_test(     OrderUuid varchar(500)DEFAULT NULL     )ENGINE = InnoDB DEFAULT CHARSET = utf8;

1 个答案:

答案 0 :(得分:1)

对于任何有兴趣的人来说,它最终实际上是超级简单的。该文件包含一些字母,我认为数据库解释为很多换行符。因此应用

strip_tags

做了这个伎俩。