无法使用php和pdo更新表

xdnvmnnf  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(380)

我有两张table, user 以及 user_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();

我没有出错,但是表没有更新

uurity8g

uurity8g1#

我必须这样重写查询。

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

添加输入以及从文本框、单选按钮等处输入值。

oo7oh9g9

oo7oh9g92#

如何更新不在被更新表中的列?我假设您使用的是mysql。如果是,可以同时更新多个表:

UPDATE users u JOIN
       user_roles ur
       ON ur.user = u.id
    SET u.nom = ?,
        ur.user_role_id = ?,
        u.pass = ?
    WHERE u.id = ?
yc0p9oo0

yc0p9oo03#

是否定义了“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();

相关问题