我试图从MySql数据库中收集一系列ID,并使用一些值更新每个ID:
global $conn;
$teams = getTeams(); // ID's
$query = "UPDATE t_teams
SET logo = ? WHERE id_team = ?";
foreach($teams as $row) {
$currDir = explode('/', $row["logo"]);
$stmt = $conn->prepare($query);
$stmt->bind_param("si", $currDir[5], $row["id_jogo"]);
$stmt->execute();
}
我知道bind_param
不会像这样工作。有很多关于此的信息,但我无法将其改编为我的代码。
我认为这与我想要的很接近:http://php.net/manual/en/mysqli-stmt.bind-param.php#104073
我怎样才能做到这一点?
答案 0 :(得分:0)
出于某种原因,我不知道为什么,$statement->bindParam()
不能在循环中工作。您可以尝试在PDO上使用$statement->bindValue()
,如果当然没有太多工作要切换到PDO。
像这样:
global $conn;
$teams = getTeams(); // ID's
$query = "UPDATE t_teams
SET logo = ? WHERE id_team = ?";
$stmt = $conn->prepare($query);
$indexCount = 0;
foreach($teams as $row) {
$currDir = explode('/', $row["logo"]);
$stmt->binValue(++$indexCount, $currDir[5]);
$stmt->execute();
}
答案 1 :(得分:-1)
尝试更改语句以使用如下所示的命名占位符:
"UPDATE t_teams SET logo = :logo WHERE id_team = :team"
然后以这种方式绑定值:
$stmt->bind_param("logo", $row["logo"]);
$stmt->bind_param("team", $row['id_jogo']);