PHP MYSQL使用表中的数组插入多个数据

PHP MYSQL使用表中的数组插入多个数据,php,mysql,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]);

我的代码有问题:

$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());
 }
$size=count($\u POST['tv\u id']);
$size=计数($_POST['seasure']);
$size=计数($_POST['eposodenumber']);
$size=计数($_POST['eposodename']);
$i=0;
而($i<$size){
$seasure=mysql\u real\u escape\u字符串($\u POST['tv\u id'][$i]);
$seasure=mysql\u real\u escape\u字符串($\u POST['seasure'][$i]);
$eposodenumber=mysql\u real\u escape\u字符串($\u POST['eposodenumber'][$i]);
$eposodename=mysql\u real\u escape\u字符串($\u POST['eposodename'][$i]);
$sql=“插入电视节目集fk_id=”””、$fk_id>”、$tv_id=”、$tv_id.“、季节=”、$Season.“、EpisodeNumber=”、“$EpisodeNumber.”、EpisodeName=”、“$EpisodeName.”;
$query=mysql\u query($sql)或die(mysql\u 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>';
echo';
回声“;
回声“;
回声“;
回声“;
回声';
回声';
回声“;
回声“;
回声“;
回声“;
回声';
回声';
回声“;
回声“;
回声“;
回声“;
回声';
回声';
回声“;
回声“;
回声“;
回声“;
回声';

然后继续进行大约10次。

您需要做的是在任何有表单操作php代码的地方使用if语句来验证表单。您可以使用下面代码的一些变体

for($i = 0; $i < count($thisVar); $i++) {
    if(!empty($thisVar[$i])) {
        <insert query>
    }
}
for($i=0;$i
$thisVar是存储表单输入的数组,i是数组中存储值的位置


作为旁注,当您在一行中多次定义了
$size
时,最后一个值将是唯一的值。如果您需要另一个带有
$j
的for循环,并且if语句中带有
$thisVar[$i][$j]

的if语句,则可以使用2D数组。我不明白为什么要将所有计数都放在相同的var大小中,但对于空记录,您可以执行以下操作:

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++;  }
while($i<$size){
$seasure=mysql\u real\u escape\u字符串($\u POST['tv\u id'][$i]);
$seasure=mysql\u real\u escape\u字符串($\u POST['seasure'][$i]);
$eposodenumber=mysql\u real\u escape\u字符串($\u POST['eposodenumber'][$i]);
$eposodename=mysql\u real\u escape\u字符串($\u POST['eposodename'][$i]);
//....
如果(!empty($seasure)和!empty($eposodenumber)和…)
{
$sql=“插入电视节目集fk_id=”””、$fk_id>”、$tv_id=”、$tv_id.“、季节=”、$Season.“、EpisodeNumber=”、“$EpisodeNumber.”、EpisodeName=”、“$EpisodeName.”;
$query=mysql\u query($sql)或die(mysql\u error());
}
$i++;}

有什么问题吗?您不想记录空行吗?因此,只需像测试
if($seasure&&$epiodenumber….)//Insert
BTW一样测试它们,您应该
$size+=…
您知道PHP代码的前4行只是覆盖了
$size
变量,对吗?我希望这样,如果我将一行留空,它将不会插入任何内容,但现在它将插入空格。我相信在您的脚本中,您将有一个无限的while循环。您从不增加
$i
的值。除非该部分被遗漏,否则应该抛出一个错误,因为
$i
始终=0这是正确的。仅在键字段不为空时插入数据。我建议使用if(!empty($someVar))而不是$someVar!=''。这是一个有效点,始终使用!=,但我认为空的会更好。如果你看一下我的答案,我会解释你可以使用2d数组来存储
$size