Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新两个表中的匹配列_Php_Mysql_Database_Updating - Fatal编程技术网

Php 更新两个表中的匹配列

Php 更新两个表中的匹配列,php,mysql,database,updating,Php,Mysql,Database,Updating,我们有两张桌子: 表1:用户用户名、密码 表2:用户信息办公室、地址、公司 用户名与办公室名称相同。我创建了一个表单来添加新用户,一切都很好 我有另一个表单要更新用户。。我可以让一切正常工作,除了用户名/办公室 如何更新用户名/办公室 这是我的代码,显然它是错的,因为它什么也不做。这一整天都让我发疯。如有任何提示,将不胜感激: $query2 = 'UPDATE users.UserName JOIN userinfo.Office ON users.UserName = useri

我们有两张桌子:

表1:用户用户名、密码 表2:用户信息办公室、地址、公司 用户名与办公室名称相同。我创建了一个表单来添加新用户,一切都很好

我有另一个表单要更新用户。。我可以让一切正常工作,除了用户名/办公室

如何更新用户名/办公室

这是我的代码,显然它是错的,因为它什么也不做。这一整天都让我发疯。如有任何提示,将不胜感激:

    $query2 =   'UPDATE users.UserName JOIN userinfo.Office ON users.UserName = userinfo.Office SET users.UserName = ?,userinfo.Office = ? WHERE users.UserName = ?';
    $parameters2 = array($_POST['UserName'],$_POST['Office']);
    $statement2  = $db->prepare($query2);
    $statement2->execute($parameters2);

主要问题是语法不正确,SET子句之前不应该有任何字段名。在更新时,您只需在查询的这一部分中指明要操作的表名。试试这个:

UPDATE users
JOIN userinfo
  ON users.UserName = userinfo.Office
SET
  users.UserName = ?,
  userinfo.Office = ?
WHERE users.UserName = ?
我也不明白,如果用户名和办公室的值相同,为什么会有两个不同的POST变量。因此,我假设一个表示当前值,另一个表示要更新的值。如果是这种情况,您需要像这样绑定参数:

// change these two lines as necessary
$old_name = $_POST['Office'];
$new_name = $_POST['UserName'];
// execute query
$query2 = '...'; // query noted above
$parameters2 = array($new_name, $new_name, $old_name);
$statement2  = $db->prepare($query2);
$statement2->execute($parameters2);

一个用户可以有多个办公室吗?我只是想知道,如果用户和用户信息之间没有一对多或多对多的关系,为什么这些信息会出现在两个不同的表中。@MikeBrant不,每个办公室只有一个用户。用户名与每个客户端请求的office名称相同。那么为什么这不只是一个表?@MikeBrant这不是问题所在。目前的问题是更新用户名/办公室的能力。users表只包含用户名/密码/和另一列。用户信息:是所有与客户相关的办公室、公司、产品。。等这不是我设计的数据库。我被雇来实现用户帐户页面等等。。。和管理页面。所以,问题是,我的语法错误在哪里?你的查询有3个?占位符,但$parameters2只有2个元素。第三个占位符应该使用什么?好吧,该代码确实更改了用户名和office,但对数据库中的每个人都是如此。@jelliott它应该只触及user.username=$old\u name所在的行。在这种情况下,$old_name的值是多少?