【发布时间】:2017-07-10 19:45:51
【问题描述】:
我正在尝试通过表单更新数据库中的颜色值,但仅在我设置 id 时才有效,例如:WHERE ID=40"; 但我需要它来处理所有行。
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8','root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse = $bdd->query('SELECT id,pseudo, message, color FROM
minichat ORDER BY ID DESC LIMIT 0, 10');
while ($donnees = $reponse->fetch())
{
echo '<form action="minichat_post2.php" method="post">
<table style="border:1px solid black">';
echo '<tr>';
echo '<td style="border:1px solid black">' .$donnees['id']. '</td>';
echo '<td style="border:1px solid black">' .$donnees['pseudo'].
'</td>';
echo '<td style="border:1px solid black">' .$donnees['message'].
'</td>';
echo '<td style="border:1px solid black">' .$donnees['color'].
'</td>';
echo '<td style="border:1px solid black">
<label for="color">Color</label> : <input type="color" name="color"
id="color" /><br />
<input type="submit" value="Envoyer" />
</td></tr></table>
</form>';
}
?>
$reponse->closeCursor();
?>
这是更新页面 minichat_post2.php,但在我设置 id 时工作唯一。 所以我需要在这里改变一些东西:WHERE id=?"; 请帮忙!!
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test";
$id=$_GET['id'];
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "UPDATE minichat SET color='".$_POST['color']."' WHERE id=?";
if ($conn->query($sql) === TRUE) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $conn->error;
}
$conn->close();
header('Location: minichat.php');
?>
【问题讨论】:
-
使用
bind_param()将变量绑定到占位符? -
你正在使用占位符
?,所以你需要使用mysqli::prepare()和mysqli_stmt::bind_param()。