2013-11-25 63 views
0

使用下面的代碼,只有最後一條記錄被插入到數據庫中。但是,如果我在循環中回顯數據,它會回顯所有記錄並回顯$ i,表明它正在遞增。還挺新到mysql所以php sql while循環只插入最後一條記錄

while($i <= $num_to_enter){ 
$name[$i] = $_POST['name'][$i]; 
$lname[$i] = $_POST['lname'][$i]; 
$email[$i] = $_POST['email'][$i]; 
$phone[$i] = $_POST['pfirst'][$i].$_POST['psecond'][$i].$_POST['pthird'][$i]; 
$skill[$i] = $_POST['skill_level'][$i]; 
$sex[$i] = $_POST['sex'][$i]; 

    $sql = "INSERT INTO `" . $mytable . "` (
`FirstName`, 
`LastName`, 
`email`, 
`phone`, 
`SkillLevel`, 
`sex` 

) VALUES (
'$name[$i]', 
'$lname[$i]', 
'$email[$i]', 
'$phone[$i]', 
'$skill[$i]', 
'$sex[$i]' 
);"; 
$i++; 
} 
+5

你貼的代碼顯示的查詢字符串,但沒有在那裏實際執行查詢。我懷疑你的'mysql_query'或等價物位於你的循環後面,因此只執行'$ sql'的最後一個值。您需要將'mysql_query'或等價物放入循環中 –

+1

您不應該在循環中使用mysql_query。 – Chris

+0

我們不會在你的代碼中提及SQL注入風險。這些值目前直接從用戶進入您的查詢。他們應該逃脫,或者你應該探索準備好的陳述。 –

回答

0
while($i <= $num_to_enter){ 
$name[$i] = $_POST['name'][$i]; 
$lname[$i] = $_POST['lname'][$i]; 
$email[$i] = $_POST['email'][$i]; 
$phone[$i] = $_POST['pfirst'][$i].$_POST['psecond'][$i].$_POST['pthird'][$i]; 
$skill[$i] = $_POST['skill_level'][$i]; 
$sex[$i] = $_POST['sex'][$i]; 

    $sql = "INSERT INTO `" . $mytable . "` (
`FirstName`, 
`LastName`, 
`email`, 
`phone`, 
`SkillLevel`, 
`sex` 

) VALUES (
'$name[$i]', 
'$lname[$i]', 
'$email[$i]', 
'$phone[$i]', 
'$skill[$i]', 
'$sex[$i]' 
);"; 
mysql_query($sql); 

$i++; 
} 
0

只有最後一條記錄被插入到數據庫

你肯定任何建議,歡迎?你甚至沒有在代碼的任何地方運行mysqli_query($conn,$sql)

+1

蠟筆暴力和尚卡達莫達蘭感謝你們倆的頭!讓我嘗試一下。哦,是的,最後的記錄確實進入了!??在循環後我有\t \t如果 \t \t { \t \t \t mysql_close($ CON)(的mysql_query($的SQL,$ CON)!); 一些錯誤信息 \t \t} else { \t \t \t mysql_close($ con); \t \t \t成功消息 \t \t} –

+1

yesm,但你的循環不斷改寫你的$ SQL字符串用一個新的,所以你最終只執行最後定義字符串。你需要將mysql_query()放入循環中。 –

+1

@MarcB,這是正確的,它會解決OP的問題,但是你真的認爲這將是一個好主意嗎? –

0

你定義的SQL查詢,但你不執行它,試着改變你的代碼如下:

while($i <= $num_to_enter){ 
$name[$i] = $_POST['name'][$i]; 
$lname[$i] = $_POST['lname'][$i]; 
$email[$i] = $_POST['email'][$i]; 
$phone[$i] = $_POST['pfirst'][$i].$_POST['psecond'][$i].$_POST['pthird'][$i]; 
$skill[$i] = $_POST['skill_level'][$i]; 
$sex[$i] = $_POST['sex'][$i]; 

$sql = "INSERT INTO `" . $mytable . "` (
`FirstName`, 
`LastName`, 
`email`, 
`phone`, 
`SkillLevel`, 
`sex` 

) VALUES (
'$name[$i]', 
'$lname[$i]', 
'$email[$i]', 
'$phone[$i]', 
'$skill[$i]', 
'$sex[$i]' 
);"; 
mysqli_query($con, $sql) or die(mysqli_error($con)); 
$i++; 
} 
相關問題