我的数据不会更新php-sql

我的数据不会更新php-sql,php,sql,database,select,sql-update,Php,Sql,Database,Select,Sql Update,您好,我尝试用php更新sql中的数据 首先,我连接到我的数据库 try { $bdd = new PDO('mysql:host=localhost;dbname=cruel', 'root', ''); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } 从另一个页面获取var后,我检查是否为空 if (isSet($_POST['radio']) ) { $timVerifie

您好,我尝试用php更新sql中的数据

首先,我连接到我的数据库

try
{
$bdd = new PDO('mysql:host=localhost;dbname=cruel', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
从另一个页面获取var后,我检查是否为空

 if (isSet($_POST['radio']) ) 
    {

        $timVerified = ($_POST['radio']) ;
        echo($_POST['radio']);
    }else{
        echo('Aucun changement à été effectué. ');

    }
我请求选择我需要的所有数据

$requete = $bdd->prepare('SELECT timVerified,usrId, timChoice,prtTimeSheetId,timId,timUserId  FROM projetstaches ,users,timesheets   ');
$requete->execute() or die(print_r($requete->errorInfo()));
$resultat = $requete->fetch();
问题是它不会在这里更新

$req = $bdd->prepare('UPDATE timesheets (timVerified) SET timVerified = :timVerified SELECT MAX(prtTimeSheetId) FROM projetstaches WHERE usrId = 7 AND timId = prtTimeSheetId AND timUserId = usrID' ); 
 $req->execute(array(
      ':timVerified' => $timVerified
     ));
有人能帮我吗?我使用wampserver,notepad++作为软件

编辑错误

致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解可在C:\wamp\www\testlp\completecheck.php第38行的第1行“从项目链接中选择MAXprtTimeSheetId,其中usrId=7和timId=prtTim”附近使用的正确语法

!!PDOException:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解可在第38行C:\wamp\www\testlp\completecheck.php的第1行“从项目链接中选择MAXprtTimeSheetId,其中usrId=7和timId=prtTim”附近使用的正确语法

为迈克尔编辑


更改从更新MySQL的行

$req = $bdd->prepare('UPDATE timesheets (timVerified) SET timVerified = :timVerified SELECT MAX(prtTimeSheetId) FROM projetstaches WHERE usrId = 7 AND timId = prtTimeSheetId AND timUserId = usrID' ); 


i、 e.删除文件

更改更新MySQL的行

$req = $bdd->prepare('UPDATE timesheets (timVerified) SET timVerified = :timVerified SELECT MAX(prtTimeSheetId) FROM projetstaches WHERE usrId = 7 AND timId = prtTimeSheetId AND timUserId = usrID' ); 


i、 e.删除timVerified

,因为更新中未引用项目链接中的任何列,并且每个timUserId的最新记录可以通过排序时间表来确定,因此不需要联接,实际上所有其他表都不需要。使用ORDER BY和LIMIT,您可以针对特定记录

对于两个共享相同日期(因为它是日期列而不是日期时间)的情况,按timCreateDate DESC和timId排序

参考文献

上面打印的查询可以通过execute调用及其数组参数直接放入PDO代码中


注意:我建议将timCreatedDate从日期类型更改为DATETIME,这样您就可以更精确地定位它。如果这样做,您可能不需要在ORDER BY中使用timId DESC。

因为在更新中没有引用projetstaches中的任何列,并且每个timUserId的最新记录可以通过排序时间表来确定,因此不需要联接,实际上所有其他表都不需要联接。使用ORDER BY和LIMIT,您可以针对特定记录

对于两个共享相同日期(因为它是日期列而不是日期时间)的情况,按timCreateDate DESC和timId排序

参考文献

上面打印的查询可以通过execute调用及其数组参数直接放入PDO代码中

注意:我建议将timCreatedDate从日期类型更改为DATETIME,这样您就可以更精确地定位它。如果您这样做了,您可能不需要在ORDER BY中使用timId DESC

UPDATE timesheets 
SET timVerified = :timVerified
WHERE timUserId = 7
ORDER BY
  timCreatedDate DESC,
  timId DESC
# Crucially, LIMIT 1 to target one record only (the first in the sort)
LIMIT 1