我不明白爲什麼while循環在插入第一行數據後停止。請幫忙。我試圖在MySql表格中上傳.csv文件 - 如果數據已經存在,跳過並轉到第二行。PHP while while while not working
<?php
$dbhost = "xxxx";
$dbname = "xxxx";
$dbuser = "xxxx";
$dbpass = "xxxx";
mysql_connect ($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
mysql_select_db($dbname) or die(mysql_error());
fgetcsv_PHP();
function fgetcsv_PHP()
{
if (($handle = fopen("events.csv", "r")) !== FALSE)
{
$length = 1000;
$delimiter = ",";
while (($data = fgetcsv($handle)) !== FALSE)
{
// Count number of array elements in $data
$num = count($data);
// Print opening table row HTML tag
$data[5]= strtolower($data[5]);
$data[11]= "2012-06-22 10:30:40";
$import="INSERT into candidatedb(event,rec,title,name,surname,email,phone,discip,exper,wheread,comment,stamp) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]')";
$result = mysql_query("SELECT * from candidatedb WHERE email = '$data[5]' AND surname = '$data[4]'");
$num_rows = mysql_num_rows ($result);
echo $num_rows;
if ($num_rows > 0) {
echo "Email address: $data[5] already exist </br>";
}
else {
mysql_query($import) or die(mysql_error());
echo "Done! $data[5] inserted<br/>";
}
}
// Close the file pointed to by $handle
fclose($handle);
}
}
"Done!<br/> $num record uploaded"
?>
<?php /*?>
$import="INSERT into candidatedb(event,rec,title,name,surname,email,phone,discip,exper,wheread,comment,stamp) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]')";
mysql_query($import) or die(mysql_error());
<?php */?>
不是答案,但:請不要使用'mysql_ *'函數來獲取新代碼。他們不再被維護,社區已經開始[棄用流程](http://goo.gl/KJveJ)。請參閱[**紅框**](http://goo.gl/GPmFd)?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定,[本文](http://goo.gl/3gqF9)將有助於選擇。如果你關心學習,[這是一本很好的PDO教程](http://goo.gl/vFWnC)。 – PeeHaa
那麼,你的問題是什麼?什麼不行?有沒有錯誤? – poke
另一件要添加到@PeeHaa的建議建議:不要在SQL查詢字符串中插入原始值,而是將自己暴露給SQL注入。使用mysqli_real_escape_string或(更好),一個準備好的聲明。 – LexLythius