2012-12-04 79 views
1

林和我的代码有问题多数据:PHP MYSQL插入使用数组从表

$size = count($_POST['tv_id']); 
$size = count($_POST['Season']); 
$size = count($_POST['EpisodeNumber']); 
$size = count($_POST['EpisodeName']); 

$i = 0; 
while ($i < $size) { 
    $Season = mysql_real_escape_string($_POST['tv_id'][$i]); 
    $Season = mysql_real_escape_string($_POST['Season'][$i]); 
    $EpisodeNumber= mysql_real_escape_string($_POST['EpisodeNumber'][$i]); 
    $EpisodeName= mysql_real_escape_string($_POST['EpisodeName'][$i]); 

    $sql="INSERT INTO tvshows SET fk_id = '".$fk_id."', tv_id ='".$tv_id."', Season ='".$Season."', EpisodeNumber='".$EpisodeNumber."', EpisodeName='".$EpisodeName."'"; 
    $query = mysql_query($sql) or die(mysql_error()); 
} 

如果我填只是我在我的表单输入一个点击提交其提交一个人,但也16空只记录playlist_id,其他列记录为空。如果我填写5列,将提交他们也以11只fk_id沿着空白

我的表布局是这样的:

echo '<tr>'; 
echo "<td><input type='hidden' name='tv_id[]' id='tv_id' value='' /></td>"; 
echo "<td><input type='text' name='Season[]' id='Season[]' value='' /></td>"; 
echo "<td><input type='text' name='EpisodeNumber[]' id='EpisodeNumber[]' value='' /></td>"; 
echo "<td><input type='text' name='EpisodeName[]' id='EpisodeName[]' value='' /></td>"; 
echo '</tr>'; 

echo '<tr>'; 
echo "<td><input type='hidden' name='tv_id[]' id='tv_id' value='' /></td>"; 
echo "<td><input type='text' name='Season[]' id='Season[]' value='' /></td>"; 
echo "<td><input type='text' name='EpisodeNumber[]' id='EpisodeNumber[]' value='' /></td>"; 
echo "<td><input type='text' name='EpisodeName[]' id='EpisodeName[]' value='' /></td>"; 
echo '</tr>'; 

echo '<tr>'; 
echo "<td><input type='hidden' name='tv_id[]' id='tv_id' value='' /></td>"; 
echo "<td><input type='text' name='Season[]' id='Season[]' value='' /></td>"; 
echo "<td><input type='text' name='EpisodeNumber[]' id='EpisodeNumber[]' value='' /></td>"; 
echo "<td><input type='text' name='EpisodeName[]' id='EpisodeName[]' value='' /></td>"; 
echo '</tr>'; 

echo '<tr>'; 
echo "<td><input type='hidden' name='tv_id[]' id='tv_id' value='' /></td>"; 
echo "<td><input type='text' name='Season[]' id='Season[]' value='' /></td>"; 
echo "<td><input type='text' name='EpisodeNumber[]' id='EpisodeNumber[]' value='' /></td>"; 
echo "<td><input type='text' name='EpisodeName[]' id='EpisodeName[]' value='' /></td>"; 
echo '</tr>'; 

,并一直走大约10另一个

+1

问题是什么?你不想记录空行?因此,只需测试它们,如'if($ Season && $ EpisodeNumber ....)//插入'BTW,你应该'$ size + = ...' – Valky

+0

你知道PHP代码的前4行只是覆盖'$ size'变量,对吧? –

+0

我想要它,所以如果我留下一行空白它不会插入任何东西,但现在插入空白。 –

回答

1

我不明白你为什么把所有计数在相同的变量大小,但为空记录,您可以执行以下操作:

while ($i < $size) { 
    $Season = mysql_real_escape_string($_POST['tv_id'][$i]); 
    $Season = mysql_real_escape_string($_POST['Season'][$i]); 
    $EpisodeNumber= mysql_real_escape_string($_POST['EpisodeNumber'][$i]); 
    $EpisodeName= mysql_real_escape_string($_POST['EpisodeName'][$i]); 
    //.... 
    if(!empty($Season) and !empty($EpisodeNumber) and ...) 
    { 
    $sql="INSERT INTO tvshows SET fk_id = '".$fk_id."', tv_id ='".$tv_id."', Season ='".$Season."', EpisodeNumber='".$EpisodeNumber."', EpisodeName='".$EpisodeName."'"; 
    $query = mysql_query($sql) or die(mysql_error()); 
    } 
    $i++; } 
+0

谢谢!这工作 –

+0

如果你看看我的答案我解释说,你可以使用2d数组来存储'$大小' –

1

什么你需要做的是有一个if语句来验证你的表单,只要你有表单动作的php代码。您可以使用以下代码的一些变体。

for($i = 0; $i < count($thisVar); $i++) { 
    if(!empty($thisVar[$i])) { 
     <insert query> 
    } 
} 

$ thisVar是存储表单输入的数组,我将是存储值的数组中的位置。

作为一个方面说明,当你连续定义了多个时间段$size时,最后一个将是唯一的值。你可以做一个二维数组,如果你需要另一个循环与$j和if语句将在那里与$thisVar[$i][$j]

+0

没错。如果您的关键字段不为空,请仅插入数据。我推荐if(!empty($ someVar))而不是$ someVar!=''。 – davidethell

+0

这是一个有效的点,总是使用!=,但我认为空白会更好。 –