Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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 Mysql根据更新状态选择项目。[语法错误]_Php_Mysql_Sql - Fatal编程技术网

Php Mysql根据更新状态选择项目。[语法错误]

Php Mysql根据更新状态选择项目。[语法错误],php,mysql,sql,Php,Mysql,Sql,我正在尝试使用mysql查询。我不确定,也许没有这样的语法。也许有,但我不能正确使用 无论如何,我的问题是: SELECT `email` FROM `user` WHERE `username`='testuser' AND 1 IN ( UPDATE `user` SET `lastcheck` = NOW() WHERE `username`='testuser' ); 有两个“where”条件。首先,对于正确的用户,secound是关于lastcheck的更新检查 我正在用phpMyA

我正在尝试使用mysql查询。我不确定,也许没有这样的语法。也许有,但我不能正确使用

无论如何,我的问题是:

SELECT `email` FROM `user` WHERE `username`='testuser' AND 1 IN ( UPDATE `user` SET `lastcheck` = NOW() WHERE `username`='testuser' );
有两个“where”条件。首先,对于正确的用户,secound是关于lastcheck的更新检查

我正在用phpMyAdminSQL页面测试它。系统出现以下错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE `user` SET `lastcheck` = NOW() WHERE `username`='testuser' ) LIMIT 0, 30' at line 1

我发现你的疑问有一个问题。字段名或表名周围不需要引号。仅需字段中包含的字符字符串:

SELECT Email from user where Username = 'testuser'

MySQL中没有可用的语法来执行
SELECT
语句中的
UPDATE
语句

在一般情况下,MySQL存储函数是解决此问题的一种方法(即从存储函数中执行UPDATE语句),但这在您的特定情况下不起作用,因为您将尝试修改已在使用的表。(这是对MySQL存储函数的限制。)

要执行您试图执行的操作,只需运行两个单独的语句:

UPDATE `user` SET `lastcheck` = NOW() WHERE `username`='testuser';
SELECT `email` FROM `user` WHERE `username`='testuser;

不能将update语句作为子查询。它需要是select语句。您希望(更新…)中的
1执行什么操作<代码>更新
不返回任何行/值。您需要作为两个查询执行此操作。首先运行
UPDATE
,然后
选择所需的行。字段/表名周围没有引号。他有倒勾,在这里使用是正确的。标识符周围的倒勾在查询中不是问题。问题是试图在
SELECT
语句的上下文中执行
UPDATE
语句。这就是查询中的问题。