尝试执行并上传csv脚本,但遇到了一个没有意义的错误。无效的令牌。它说我的列与我的?,?,?不匹配?,?,?,?,?。5列,5?问号,我错过了什么?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<form enctype="multipart/form-data" method="POST">
<input name="userfile" type="file">
<input type="submit" value="Upload">
<input name="row_name" type="text">
</form>
<?php
$dsn = "mysql:host=$host;port=$port;dbname=$dbname"; //Data Source Name = Mysql
(isset($rowname = $_POST['row_name']));
$db = new PDO($dsn, $db_username, $db_password); //Connect to DB
$do = $db->prepare(
"CREATE TABLE IF NOT EXISTS $username.$rowname (
id INT AUTO_INCREMENT NOT NULL,
list_name varchar(100) NOT NULL,
fname char(60),
lname char(60),
list_email varchar(100),
PRIMARY KEY (id)
)
CHARACTER SET utf8 COLLATE utf8_general_ci
TRUNCATE TABLE $username.$rowname
INSERT INTO $username.$rowname VALUES(?,?,?,?,?)"
);
$csv_file = $_FILES['userfile']['tmp_name'];
if (($handle = fopen($csv_file, "r")) !== FALSE) {
while (($data = fgetcsv($handle)) !== FALSE) {
$do->execute($data);
var_dump($data);}
fclose($handle);}
exit( "Complete!" );
?>
</body>
</html>
错误
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /home/wemail1/www/pages/campaign-build.inc.php on line 58
样本数据:
fname, lname, email
joe, schmoe, bogus@bogus.com
mary, lamb, hoe@us.com
您的$数据没有5个参数。这也是错误信息。您有3个值,而代码需要5个值。你需要这样的东西:
$insert = array(NULL, $data[0]." ".$data[1], $data[0],$data[1],$data[2]);
$do->execute($insert);
代替:
$do->execute($data);
那么,如果你有5个?在准备过程中,您需要一个有5个值的数组,否则就会出现错误。