我的数据不会更新php-sql
您好,我尝试用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
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