sql查询只放入一个记录而不是多个?

时间:2014-03-17 13:53:04

标签: php mysql sql

您好我只是尝试执行此php / sql查询,我尝试使用此代码一次输入多条记录,但它只进入一条,而不是其他...

CODE:

    <?php
        $results=$_POST['results'];
        $day=$_POST['day'];
        $lmID=$_POST['lmID'];
        $cID=$_POST['cID'];
        $count_cID = count($_POST['cID']);

        for($i=0;$i<$count_cID ;$i++){
        $_results = mysql_escape_string($results[$i]);
        $_day = mysql_escape_string($day[$i]);
        $_lmID = mysql_escape_string($lmID[$i]);
        $_cID = mysql_escape_string($cID[$i]);

        $sql = mysql_query("INSERT INTO Club (results, day, lmID, cID) VALUES ('$_results', '$_day', '$_lmID', '$_cID')");
        $result = mysql_query($sql);
    }

    ?>

HTML表格:             

            League Match ID:
            <?php echo $lmID;?> <input type="hidden" name="lmID[]" value="<?php echo $lmID; ?>" >
            Competitor ID:
            <?php echo $cID;?> <input type="hidden" name="cID[]" value="<?php echo $cID; ?>" >
            Result:
            <input type="text" name="results[]">
            Day:
            <input type="text" name="day[]">

            <input type="submit" name="submit">
        </form>

2 个答案:

答案 0 :(得分:0)

$sql = mysql_query("INSERT INTO Club (results, day, lmID, cID) VALUES ('$_results', '$_day', '$_lmID', '$_cID')");
$result = mysql_query($sql);

应该是:

$sql = <<<EOF
INSERT INTO Club (results, day, lmID, cID) 
VALUES ('{$_results}', '{$_day}', '{$_lmID}', '{$_cID}')
EOF;
$result = mysql_query($sql);

如其他评论中所述,请不要使用mysql_数据库函数 - 使用PDO或mysqli_函数。 mysql_query已被弃用(有充分理由)。对于其他库,似乎您的语句也将成为PREPARE的候选者,然后是EXECUTE。例如使用PDO ......

$sql = <<<EOF
INSERT INTO Club (results, day, lmID, cID) 
VALUES (?, ?, ?, ?)
EOF;
$stmt = $db->prepare( $sql);

for($i=0;$i<$count_cID ;$i++){
    // escape your data here - you might not need to with PDO
    $result = $stmt->execute( array( $_results, $day, $_lmID, $_cID));
}

答案 1 :(得分:0)

确保$count_cID超过1(一)。它不是,看起来像。我之间引用此变量的原因是您要将$i与它进行比较,而在for循环中,如果它不大于1,那么循环内容将是只执行一次,因为在第二次尝试时,条件将不再验证。