php - 无法使用 PHP 和 PDO 更新表

标签 php mysql sql pdo

我有 2 个表,useruser_role:

user = id, name, pass
user_role= user_role_id, user_role_name

我正在尝试使用以下查询更新表格:

UPDATE users SET nom = ?, user_role_id = ?, pass = ? WHERE id = ?

我的 PHP 代码:

$nom = $_POST['nom']; $roles = $_POST['roles'];$pass = $_POST['pass'];  
$valid = true; if (empty($nom)) { $nameError = 'Entrée un nom'; $valid = 
false; }
else if (!preg_match("/^[a-zA-Z ]*$/",$nom)){ $nameError = "que des letttres 
sans espace"; } 
if(empty($pass)){ $passError ='entrée un mot de pass'; $valid= false; }
else if (!preg_match('$S*(?=S{8,})(?=S*[a-z])(?=S*[A-Z])(?=S*[d])(?=S* 
[W])S*$', $pass)) 
if (!isset($roles)) { $rolesError = 'Selectionner un roles'; $valid = 
false; } 
if ($valid) { $pdo = Database::connect(); $pdo- 
>setAttribute(PDO::ATTR_ERRMODE, 
PDO::ERRMODE_EXCEPTION);

 $sql = "UPDATE users 
 SET nom = ?, user_role_id = ?, pass = ? WHERE id = ?";

            $q = $pdo->prepare($sql);
            $q->execute(array($id,$nom, $roles,$pass));
            Database::disconnect();

我没有收到任何错误,但表格没有更新

最佳答案

是否定义了“nom”列?

我认为“nom”实际上是用户的“name”列,我错了吗?

数组中变量的顺序也是错误的。代码应该如下

$sql = "UPDATE users  SET name = ?, user_role_id = ?, pass = ? WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($nom, $roles,$pass,$id));
Database::disconnect();

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

相关文章:

php - Laravel 4 迁移 :install ErrorException

sql - 比较字符串,如果它在 Sql Server 2008 中为 NULL

sql - HQL left outer join 用于查找一个表中存在而另一个表中不存在的记录

php - Javascript PHP N 层架构

php - 使用 PHP 和 jQuery 使用单选按钮进行测验

mysql - 在 MySQL 连接表中使用 GROUP BY

MySQL LEFT JOIN 两个嵌套表的性能

mysql - '' 附近的 SQL 语法错误

php - 使用 .htaccess 设置位于同一文件夹中的 404 错误文档

php - 如何在 Mysqli 准备语句中使用 PHP 常量