使用mysqli多次插入数据库

时间:2014-02-26 21:17:14

标签: php sql mysqli

所以我正在更新我的问题,因为编码已大幅改变,谢谢

所以这是我的premier_league.php页面,当联盟被选中时被召唤......

<form action="" method="POST">
<input type="submit" name="add" value="Add" class="btn btn-medium btn-success"><br><br>
<?php

$leaguelist = '<option disabled>Please select team</option>';
if ($league_var == NULL) {
    $leaguelist .= '<option "disabled"><strong>Please Select a League Table</strong></h1>';
} else {
    $league_table = get_table($league_var);
foreach ($league_table as $rows) {    

        $leaguelist .= '<option>'.htmlspecialchars($rows['team']).'</option>';
    }
}
$needed_rows = ceil(count(get_table($league_var)) / 2);
for($i=1; $i <= $needed_rows; $i++){
?>
<select name="result[<?=$i?>][home]" id="" style="width:175px">
<?=$leaguelist?>
</select>

<input type="text" name="result[<?=$i?>][home-score]" class="edit_league_input" value="">
vs
<input type="text" name="result[<?=$i?>][away-score]" class="edit_league_input" name="" value="">
<select name="result[<?=$i?>][away]" id="" style="175px">
<?=$leaguelist?>
</select>
<input type="date" name="result[<?=$i?>][date]" style="width:150px;">
<input type="time" name="result[<?=$i?>][kickoff]" style="width:90px;">
<input type="checkbox" name="result[<?=$i?>][on-tv]" value="Yes" style="margin:-10px 5px 0px 5px;">on T.v
<input type="text" name="result[<?=$i?>][channel]" value="" placeholder="Channel..." style="width:100px;">
<select name="result[<?=$i?>][result]" id="" style="width:125px;">
<option value="">Match Choice...</option>
<option value="HT">Half Time</option>
<option value="FT">Full Time</option>
<option value="P">Postponed</option>
</select>
<br>
<?php
}
?>

从那以后,您可以看到一个行现在已经循环播放,并且取决于联盟中有多少个团队,这将决定在Prem中需要多少个灯具行,这是10 ..所以固定装置的页面似乎是排序的,但如果有什么事情,请提起并告诉我..

接下来很好,最初的问题是关于使用 MySQLi 并将多行添加到数据库中。所以再次得到帮助,结果看起来像这样......

for ($i = 0; $i < count($h); $i++) {
    $sql = "INSERT INTO `fixtures` (`home`, `home-score`, `away-score`, `away`, `kickoff`, `on-tv`, `channel`, `league`, `result`, `date`)
VALUES(?,?,?,?,?,?,?,?,?,?)";

$stmt = $db->prepare($sql);
$stmt->bind_param("s", $h[$i]);
$stmt->bind_param("i", $hs[$i]);
$stmt->bind_param("i", $as[$i]);
$stmt->bind_param("s", $a[$i]);
$stmt->bind_param("s", $time[$i]);
$stmt->bind_param("i", $tv[$i]);
$stmt->bind_param("i", $channel[$i]);
$stmt->bind_param("s", $league[$i]);
$stmt->bind_param("s", $result[$i]);
$stmt->bind_param("s", $date[$i]);
$success = $stmt->execute();

if ($success === false) {
    echo $stmt->errno . ": " . $stmt->error;
}

所以现在我猜的主要问题是如何在一个函数中使用它,我的函数位于 general.func.php ,我想因为有10个参数,并且可能会出现到12行,最多120个参数通过,那么是否有更短/更清晰的方式通过函数传递那么多参数? 由于循环,变量为$ x * [$ i] *,我会像那样传递它们吗?所以函数可以读取

add_function($h[$i], $hs[$i], $as[$i], $a[$i], $time[$i], $tv[$i], $channel[$i], $league[$i], $league[$i], $result[$i], $date[$i]) {...}

或者我是否必须通过函数传递所有参数?

2 个答案:

答案 0 :(得分:1)

首先,永远不可能将变量存储为$*1 ... $*n。使用数组。

其次,这是如何准备声明:

for ($i = 0; $i < count($h); $i++) {
    $sql = "INSERT INTO `fixtures` (`home`, `home-score`, `away-score`, `away`, `kickoff`, `on-tv`, `channel`, `league`, `result`, `date`)
VALUES(?,?,?,?,?,?,?,?,?,?)"

    $stmt = $db->prepare($sql);
    $stmt->bind_param("s", $h[$i]);
    $stmt->bind_param("i", $hs[$i]);
    $stmt->bind_param("i", $as[$i]);
    $stmt->bind_param("s", $a[$i]);
    $stmt->bind_param("s", $time[$i]);
    $stmt->bind_param("i", $tv[$i]);
    $stmt->bind_param("i", $channel[$i]);
    $stmt->bind_param("s", $league[$i]);
    $stmt->bind_param("s", $result[$i]);
    $stmt->bind_param("s", $date[$i]);
    $success = $stmt->execute();

    if ($success === false) {
        echo $stmt->errno . ": " . $stmt->error;
    }
}

答案 1 :(得分:-1)

尝试以下方法:

$sql = "INSERT INTO tablename (`home`, ...) VALUES (`$h1`, ...); ";
$sql .= "INSERT INTO tablename (`home`, ...) VALUES (`$h2`, ...); ";

请注意,每次INSERT查询后都会有分号。除了最后一个,你可以。

替代:

$sql = "INSERT INTO Table (`home`, ...) VALUES( `$h1`, ... ), ( `$h2`, ... )";