我有2个表,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();
我没有错误,但是表没有更新
答案 0 :(得分:0)
如何更新未更新表中的列?我假设您正在使用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 = ?
答案 1 :(得分:0)
我有这样的重写查询。
UPDATE users SET nom =@nom , user_role_id = @user_role_id, pass = @pass WHERE id = @id
还要在值来自文本框,单选按钮等的地方添加输入。
答案 2 :(得分:0)
是否定义了“ nom”列?
我认为“ nom”实际上是用户的“名称”列,对吗?
数组中变量的顺序也是错误的。代码应如下所示
$sql = "UPDATE users SET name = ?, user_role_id = ?, pass = ? WHERE id = ?";
$q = $pdo->prepare($sql);
$q->execute(array($nom, $roles,$pass,$id));
Database::disconnect();