使用PDO PHP将CSV导入MySQL数据库
我正在尝试创建一个sql注入安全的表单,您可以将CSV文件上载到MySQL数据库。下面是我的代码,但它是浏览器中csv中的数据,但没有将数据插入数据库使用PDO PHP将CSV导入MySQL数据库,php,mysql,csv,pdo,Php,Mysql,Csv,Pdo,我正在尝试创建一个sql注入安全的表单,您可以将CSV文件上载到MySQL数据库。下面是我的代码,但它是浏览器中csv中的数据,但没有将数据插入数据库 <?php require_once("session.php"); require_once("class.user.php"); $user = new USER(); $user_id = $_SESSION['user_session']; if(isset($_SESSION['user_session'])) { if
<?php
require_once("session.php");
require_once("class.user.php");
$user = new USER();
$user_id = $_SESSION['user_session'];
if(isset($_SESSION['user_session']))
{
if (isset($_POST['submit'])) {
$session = $_SESSION['user_session'];
//upload file
if (is_uploaded_file($_FILES['csv']['tmp_name'])) {
echo "<h1>" . "File ". $_FILES['csv']['name'] ." uploaded successfully." . "</h1>";
echo "<h2>Displaying contents:</h2>";
readfile($_FILES['csv']['tmp_name']);
}
//Import uploaded file to Database
$handle = fopen($_FILES['csv']['tmp_name'], "r");
$stmt = $user->runQuery("INSERT INTO main(
first_name,
last_name,
info1,
info2,
info3,
info4,
info5,
info6,
info7,
info8) VALUES(
?,?,?,?,?,?,?,?,?,?)");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$stmt->bindparam(1, $data[0], PDO::PARAM_STR);
$stmt->bindparam(2, $data[1], PDO::PARAM_STR);
$stmt->bindparam(3, $data[2], PDO::PARAM_STR);
$stmt->bindparam(4, $data[3], PDO::PARAM_STR);
$stmt->bindparam(5, $data[4], PDO::PARAM_STR);
$stmt->bindparam(6, $data[5], PDO::PARAM_STR);
$stmt->bindparam(7, $data[6], PDO::PARAM_STR);
$stmt->bindparam(8, $data[7], PDO::PARAM_STR);
$stmt->bindparam(9, $data[8], PDO::PARAM_STR);
$stmt->bindparam(10, $data[9], PDO::PARAM_STR);
$stmt->execute();
}
fclose($handle);
}
}
?>
删除了所有的->bindParam
并替换为->execute($data)
哪里是$stmt->bindParam(1
?您不能从2
开始。我假设运行查询()
做了一个准备。更新了,但仍然没有什么-请再次查看问题以了解更新readfile
的作用是:将文本输出到浏览器。--也只是执行($data)会比很多调用->bindParam
更简单。@mario谢谢你,mario,我删除了所有->bindParam
,只使用了->execute($data)
。现在可以正常工作了:)。