php - 无法更新表 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.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);
?>

最佳答案

execute() 函数不需要 $sql(您在 prepare() 中提供)

$stmt->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);  

关于php - 无法更新表 PDO 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35658561/

相关文章:

php - MySQL 十进制字段在 PHP 中作为字符串返回

mysql - 如何使用 jdbctemplate 保存或更新数据库中的多个值

PHP:SQL 准备语句事务无法正常工作。它插入 1 个 SQL 语句,而不是两者

php - Mysql:关系型数据库,如何操作?

php - 使用 php 和 mysql 进行 Ajax 分页

php - mysql 到 mysqli 连接代码失败?

PHP:SQLite 将值作为字符串返回

MySql select unique with sum 产生奇怪的结果

php - 删除带有复选框的表单不起作用

mysql - NoSQL 数据库设计