php mysql PDO更新
我试图用以下代码更新MySQL行。这不起作用,值保持不变。我错在哪里?我将其他案例中的“?”格式类比为不准确:php mysql PDO更新,php,mysqli,pdo,Php,Mysqli,Pdo,我试图用以下代码更新MySQL行。这不起作用,值保持不变。我错在哪里?我将其他案例中的“?”格式类比为不准确: $fname_upd=$_POST['fname']; $lname_upd=$_POST['lname']; $email_upd=$_POST['email']; include('connection.php'); $q_ins="UPDATE myguests SET (firstname, lastname,email) VALUES(?,?,?) WHERE id=
$fname_upd=$_POST['fname'];
$lname_upd=$_POST['lname'];
$email_upd=$_POST['email'];
include('connection.php');
$q_ins="UPDATE myguests SET (firstname, lastname,email) VALUES(?,?,?) WHERE id=?";
$ins=$dbh->prepare($q_ins);
$res=$ins->execute(array($fname_upd,$lname_upd,$email_upd,$id));
print_r($res);
请检查此更新代码,但请告诉我您在哪里定义了$id变量,因为它是我们更新值所依据的变量 我做了什么? 我已经用占位符值更新了您的更新查询,还使用了isset()函数来检查我们的$\u POST值
<?php
$fname_upd = isset($_POST['fname']) ? $_POST['fname'] : '';
$lname_upd = isset($_POST['lname']) ? $_POST['lname'] : "";
$email_upd = isset($_POST['email']) ? $_POST['email'] : "";
include('connection.php');
$sql = "UPDATE myguests SET firstname = :firstname, lastname = :lastname, email = :email WHERE id = :id";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':firstname', $fname_upd, PDO::PARAM_STR);
$stmt->bindParam(':lastname', $lname_upd, PDO::PARAM_STR);
$stmt->bindParam(':email', $email_upd, PDO::PARAM_STR);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
请检查此更新的代码,但请告诉我您在哪里定义了$id变量,因为它是我们更新值所依据的变量
我做了什么?
我已经用占位符值更新了您的更新查询,还使用了isset()函数来检查我们的$\u POST值
<?php
$fname_upd = isset($_POST['fname']) ? $_POST['fname'] : '';
$lname_upd = isset($_POST['lname']) ? $_POST['lname'] : "";
$email_upd = isset($_POST['email']) ? $_POST['email'] : "";
include('connection.php');
$sql = "UPDATE myguests SET firstname = :firstname, lastname = :lastname, email = :email WHERE id = :id";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':firstname', $fname_upd, PDO::PARAM_STR);
$stmt->bindParam(':lastname', $lname_upd, PDO::PARAM_STR);
$stmt->bindParam(':email', $email_upd, PDO::PARAM_STR);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$stmt->execute();
您编写了错误的查询。
以下是更正后的查询:
$q_ins="UPDATE myguests SET firstname=?, lastname=?,email=? WHERE id=?";
$ins=$dbh->prepare($q_ins);
阅读php PDO手册。您编写了错误的查询。
以下是更正后的查询:
$q_ins="UPDATE myguests SET firstname=?, lastname=?,email=? WHERE id=?";
$ins=$dbh->prepare($q_ins);
阅读php PDO手册。我不确定execute()
是否对其参数有任何作用。如果要保留?
语法,可以在执行前使用准备好的语句。所以你的代码看起来更像
$q_ins="UPDATE myguests SET (firstname, lastname, email) VALUES(?,?,?) WHERE id=?";
$ins=$dbh->prepare($q_ins);
$ins->bind_param('ssss', $fname_upd, $lname_upd, $email_upd, $id);
$res=$ins->execute();
bind_params()
的第一个参数告诉准备好的语句需要什么类型。根据$id
的定义,您可能希望将$id
的's'
更改为'i'
,但根据我的经验,这实际上并不重要。我不确定execute()
是否对其参数有任何作用。如果要保留?
语法,可以在执行前使用准备好的语句。所以你的代码看起来更像
$q_ins="UPDATE myguests SET (firstname, lastname, email) VALUES(?,?,?) WHERE id=?";
$ins=$dbh->prepare($q_ins);
$ins->bind_param('ssss', $fname_upd, $lname_upd, $email_upd, $id);
$res=$ins->execute();
bind_params()
的第一个参数告诉准备好的语句需要什么类型。根据$id
的定义,您可能希望将$id
的's'
更改为'i'
,但以我的经验,这实际上并不重要