【问题标题】:sql UPDATE depending on row idsql UPDATE取决于行ID
【发布时间】: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');
?>

【问题讨论】:

标签: php html sql


【解决方案1】:

你需要添加

  echo "<input type='hidden' name='id' value='".$donnees['id']."'>";

进入您的第一个文件(可能在最后一个 echo 之前)。然后在第二个文件中将$id = $_GET['id']; 更改为$id = $_POST['id'];(因为您使用的是method='post',而不是method='get')。并且还在第二个文件中将您的查询更改为:

$sql = "UPDATE minichat SET color='".$_POST['color']."' WHERE id=".(int)$id;

请注意,此代码易受 SQL 注入攻击。使用准备好的查询可能是一种缓解方法。

【讨论】:

  • 感谢您的回答,但不幸的是还没有工作
  • 这很不幸,但如果没有你身边的具体细节,我无法再为你提供帮助......
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多