【发布时间】:2013-12-13 10:50:31
【问题描述】:
谁能帮帮我。 这是代码:
public function csv_file()
{
$file = $_FILES['importeren']['tmp_name'];
$handle = fopen($file,"r");
$filecsv = fgetcsv($handle,1000, ";");
foreach($filecsv as $csv)
{
$password = rand(100000,999999);
//echo $password . '</br>' ;
$username = $csv;
$studentnummer = $csv;
$klas = $csv;
/* $voornaam = $csv[3];
$tv = $csv[4];
$achternaam = $csv[5];*/
$query = "INSERT INTO user (fk_klas_ID,admin_ID,username,password,studentnummer) "
. "VALUES ('$klas','0','$username', sha1('$password'),$studentnummer');";
$result = $this->db->query($query);
return $filecsv;
}
}
我收到了这个错误:
Error Number: 1064
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL
server version for the right syntax to use near '')' at line 1
INSERT INTO user (fk_klas_ID,admin_ID,username,password,studentnummer)
VALUES ('Richard','0','Richard', sha1('710565'),Richard');
Filename: C:\xampp\htdocs\codeigniter\system\database\DB_driver.php
Line Number: 330
我希望您可以提供一个 csv 文件,以便内容进入数据库。 我正在使用 codeigniter
对不起我的英语不好
【问题讨论】:
-
此处突出显示的语法准确显示了您的问题所在:第二个引号 ($studentnummer)
Richard -
但这只是csv文件中的一个名字
-
其他问题:您没有转义从 CSV 读取的任何字符串值,或使用准备好的语句,因此任何这些字符串值中的引号字符都会给您带来问题
-
其他问题:您正在使用 sha1 进行密码散列?!?
-
@ShankarDamodaran 我没有给你的参考资料,但仅使用 SHA1 散列密码是不够的:它太快了。使用快速计算机(例如,使用快速 GPU),您可以非常快速地破解 SHA1 哈希密码(在数小时内,几个月前我自己就做到了)。您需要一个具有相当高成本(和盐)的强大哈希算法才能足够安全。链接的函数会处理这一切。
标签: php sql file codeigniter csv