Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql PDO更新_Php_Mysqli_Pdo - Fatal编程技术网

php mysql PDO更新

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=

我试图用以下代码更新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=?"; 
$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'
,但以我的经验,这实际上并不重要