Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 如何在UPDATE语句中使用内部联接?_Php_Mysql_Xhtml - Fatal编程技术网

Php 如何在UPDATE语句中使用内部联接?

Php 如何在UPDATE语句中使用内部联接?,php,mysql,xhtml,Php,Mysql,Xhtml,我有两个mysql表,它们在数据库中通过descriptionId字段连接 dataTable.dataId dataTable.descriptionId dataTable.userId dataTable.value descriptionLookupTable.descriptionId descriptionLookupTable.descriptionName 在PHP中,我试图在dataTable.descriptionID=Gender和dataTable.userId=$\

我有两个mysql表,它们在数据库中通过descriptionId字段连接

dataTable.dataId
dataTable.descriptionId
dataTable.userId
dataTable.value

descriptionLookupTable.descriptionId
descriptionLookupTable.descriptionName
在PHP中,我试图在
dataTable.descriptionID=Gender
dataTable.userId=$\u会话['userId']
时更新字段:dataTable.value

例如,在descriptionLookupTable中:
descriptionLookupTable.descriptionId=1
descriptionLookupTable.descriptionName=Gender
。在数据表中:
dataTable.descriptionID=1

我通过以下方式理解处理用户ID的部分:

"WHERE dataTable.userId = '" . $_SESSION['userId'] . "'"; 
但我不知道如何使用内部联接

以下查询不起作用

$query = "UPDATE dataTable
  INNER JOIN descriptionLookupTable
  ON dataTable.descriptionId = descriptionLookupTable.descriptionId
  AND descriptionLookupTable.descriptionName = Gender
  SET Gender = '$gender' WHERE dataTable.user_id = '" . $_SESSION['user_id'] . "'";
错误消息是:
未知列“字段列表”中的“性别”

descriptionLookupTable.descriptionName = Gender
Gender
在本例中是字符串文字,因此必须将其标记为字符串文字

descriptionLookupTable.descriptionName = 'Gender'

性别显然不是表中的一列。其中一个字段必须命名为性别,才能更新其内容

尝试更新表中的字段怎么样:):


试试这个
SET dataTable.Gender='…'
谢谢,但当我尝试它时,我在“字段列表”中得到错误消息:未知列“dataTable.Gender”。是的,我试过了,但得到了相同的答案。谢谢。不知道为什么会被否决。sql需要这些冒号才能工作,即使这不是QueryTanks中出现的第一个问题,但当我尝试使用它时,我在“field list”中得到错误消息:未知列“dataTable.value”。hmmm。为什么mysql会识别连接的dataTable.descriptionId,而不是dataTable.value。您确定字段的大小写和名称吗?你能把桌子的结构贴出来吗?就像phpmyadmin的输出一样,当你只将结构导出到screenoh时,一定要把性别放在冒号“性别”之间,正如VolkerK所说。这实际上是一个在排除列名称问题后会遇到的问题谢谢大家!Felix和Volkerk的想法组合成功了!以下mysql语句起作用:$query=“更新dataTable内部联接descriptionLookupTable ON dataTable.descriptionId=descriptionLookupTable.descriptionId和descriptionLookupTable.descriptionName='SEXT'设置dataTable.value='$SEXT'其中dataTable.user_id='”$_会话['user_id']。"'";实际上,我的上一条评论wrt user_id中有一个输入错误。下面是修复方法:$query=“更新dataTable内部连接描述符dataTable.descriptionId=descriptionLookupTable.descriptionId和descriptionLookupTable.descriptionName=”性别“设置dataTable.value=”性别“其中dataTable.userId=”$_会话['userId']。"'";
SET dataTable.value = '$gender' WHERE dataTable.user_id = '" . $_SESSION['user_id'] . "'";