Php 无法更新表PDO更新
我正在尝试使用PDO更新数据库中的表。目前,我正在提交表单,只得到一个白色屏幕,我已经启用了所有错误报告选项,但仍然只有一个白色屏幕。。我已经盯着代码看了一辈子,但仍然无法解决这个问题。如果能朝着正确的方向努力,我们将不胜感激……谢谢Php 无法更新表PDO更新,php,mysql,database,pdo,Php,Mysql,Database,Pdo,我正在尝试使用PDO更新数据库中的表。目前,我正在提交表单,只得到一个白色屏幕,我已经启用了所有错误报告选项,但仍然只有一个白色屏幕。。我已经盯着代码看了一辈子,但仍然无法解决这个问题。如果能朝着正确的方向努力,我们将不胜感激……谢谢 require('includes/config.php'); //if not logged in redirect to login page if(!$user->is_logged_in()){ header('Location: login.p
require('includes/config.php');
//if not logged in redirect to login page
if(!$user->is_logged_in()){ header('Location: login.php'); }
$signedin = $_SESSION['username'];
$sql = "UPDATE member SET firstname = :firstname,
lastname = :lastname,
username = :username,
email = :email,
age = :age,
country = :country
where username = $signedin";
$stmt = $db->prepare($sql);
$stmt->bindParam(':firstname', $_POST['firstname'], PDO::PARAM_STR);
$stmt->bindParam(':lastname', $_POST['$lastname'], PDO::PARAM_STR);
$stmt->bindParam(':username', $_POST['username'], PDO::PARAM_STR);
// use PARAM_STR although a number
$stmt->bindParam(':email', $_POST['email'], PDO::PARAM_STR);
$stmt->bindParam(':age', $_POST['age'], PDO::PARAM_STR);
$stmt->bindParam(':country', $_POST['country'], PDO::PARAM_INT);
$stmt= $db->execute($sql);
?>
您需要在
where子句中使用引号
$sql = "UPDATE member SET firstname = :firstname,
lastname = :lastname,
username = :username,
email = :email,
age = :age,
country = :country
where username = '$signedin'";
另外,最好按id更新,因为它是唯一的。您需要在where子句中使用引号
$sql = "UPDATE member SET firstname = :firstname,
lastname = :lastname,
username = :username,
email = :email,
age = :age,
country = :country
where username = '$signedin'";
另外,最好按id更新,因为它是唯一的。函数不需要$sql
(您在prepare()
中提供了该函数)
接下来,您应该将所有数据传递到您准备好的语句中,否则您就失去了目的(这是最大的安全性)。所以让我们移除
$sql = "UPDATE member SET firstname = :firstname,
lastname = :lastname,
username = :username,
email = :email,
age = :age,
country = :country
where username = :username";
//snip
$stmt->bindParam(':username', $_SESSION['username'], PDO::PARAM_STR);
execute()
接下来,您应该将所有数据传递到您准备好的语句中,否则您就失去了目的(这是最大的安全性)。所以让我们移除
$sql = "UPDATE member SET firstname = :firstname,
lastname = :lastname,
username = :username,
email = :email,
age = :age,
country = :country
where username = :username";
//snip
$stmt->bindParam(':username', $_SESSION['username'], PDO::PARAM_STR);
如果是唯一的,则按用户名更新没有问题。如果是唯一的,则按用户名更新没有问题。@chris85就是这样。Updated@chris85的确如此。更新你应该检查错误日志而不是盯着白页。你应该检查错误日志而不是盯着白页。