PHP更新准备的语句问题

时间:2018-09-01 03:54:58

标签: php html sql

以下是任何希望更新数据库的人员的更新代码。谢谢大家的帮助。

<?php
  try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, 
 $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// prepare sql and bind parameters
$stmt = $conn->prepare("UPDATE test SET title=:title WHERE id=:id");
$stmt->bindParam(':title', $title);  
$stmt->bindParam(':id', $id);

// Update a row
$title = $_POST['title'];
$id = $_POST['id'];
$stmt->execute();
echo "Row updated"; 
echo "<br />";
echo "<strong>$title</strong> and <strong>$id</strong>";
 }
 catch(PDOException $e) {
echo "Error: " . $e->getMessage();
 }
$conn = null;
?>

3 个答案:

答案 0 :(得分:1)

使用bind_param():

<?php
   $statement = $conn->prepare("UPDATE test SET title= ? WHERE id= ?");
   $statement->bind_param('si', $title,$id);
   $statement->execute();
   if ($statement->affected_rows >0) {
      echo "Record updated successfully";
   } else {
      echo "Error updating record: " . $conn->error;
   }
   $statement->close();
?> 

答案 1 :(得分:1)

尽管现在只在调用bindParam时才有PDO和MySQLi的混合使用,就像在调用MySQLi::bind_param一样。同样在您的上一次编辑中,查询字符串被添加Values=?弄得一团糟,我不确定您为什么这样做?无论如何,这应该做您想要的:

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("UPDATE test SET title=:title WHERE id=:id");
    $stmt->bindParam(':title', $title);  
    $stmt->bindParam(':id', $id);

    // Update a row
    $title = $_POST['title'];
    $stmt->execute();
    echo "Row updated";
}
catch(PDOException $e) {
    echo "Error: " . $e->getMessage();
}
$conn = null;

答案 2 :(得分:0)

use this.hope it will help you.
<?php
$statement = $conn->prepare("UPDATE myTable SET name = ? WHERE id = ?");
$statement->bind_param("si", $_POST['title'],$id);
$statement->execute();
$statement->close();
?>