使用bind_param()函数添加多行

时间:2014-05-17 17:00:37

标签: php mysql database mysqli

所以我有这个代码。

while($counter < $i){
$link = new mysqli('localhost', 'root', '', 'domaci2');

    $query = 'INSERT INTO utisci VALUES(?,?,?,?,?,?)';
    $statement = $link->prepare($query);    
    $statement->bind_param("isssis", $id, $grad, $ime, $opis, $ocena, $tagovie[$counter]);

    $statement->execute();

    mysqli_close($link);
    $counter++;
    }

我想要做的是在这个while循环中向我的数据库添加多行。你可以看到一切都保持不变,唯一改变的是$ tagovie [$ counter]变量,它应该在evey下一循环中有所不同。

但我只在我的数据库中保存了一行,第一行完全保存。其他人只是被忽视了。

我想知道有什么方法可以做到这一点或修改我的代码。

提前致谢。

我也尝试了这个代码,它是相同的

$link = new mysqli('localhost', 'root', '', 'domaci2');

    $query = 'INSERT INTO utisci VALUES(?,?,?,?,?,?)';
    $statement = $link->prepare($query);
    while($counter < $i){
       $statement->bind_param("isssis", $id, $grad, $ime, $opis, $ocena, $tagovie[$counter]);
       $counter++;
        }

    $statement->execute();

    mysqli_close($link);

1 个答案:

答案 0 :(得分:1)

您应该在循环外部打开和关闭数据库连接。这同样适用于准备声明,您只需准备一次。

您的问题可能是由您绑定变量的方式引起的:

 $statement->bind_param("isssis", $id, $grad, $ime, $opis, $ocena, $tagovie[$counter]);
                                  ^^^ this would be the problem

我认为第一列--ID - 具有唯一约束,所以在第一次插入后,所有后续插入都将失败,因为ID在循环中不会改变。

似乎没有必要一次又一次地添加相同的行只有很小的变化,你应该好好看看你的表结构和数据库规范化。