【发布时间】:2013-01-07 05:56:44
【问题描述】:
我不明白为什么这些行不起作用:
$host = 'localhost';
$dbname='mydbname';
$login='mylogin';
$pwd='mypwd';
$datex = date('Y/m/d H:i:s');
$nomx = 'jrmy';
$numx = '007';
try {
$bdd = new PDO('mysql:host='.$host.';dbname='.$dbname, $login, $pwd);
}
catch(Exception $e) {
die('Erreur : '.$e->getMessage());
}
$bdd->exec('INSERT INTO dossiers(date, nom, numero, disp) VALUES(\''.$datex.'\', \''.$nomx.'\', \''.$numx.'\', \'Y\')');
$id = $bdd->lastInsertId();
$bdd= null;
echo 'id: '.$id;
披露:该脚本在我的 apache 服务器上运行,由于我将脚本安装在 IIS 服务器上,它停止运行...
查询功能完美运行...查询OK,插入NO
编辑:谢谢大家!真的!
【问题讨论】:
-
将值连接到查询中完全违背了准备语句的目的。
-
@AustinBrunkhorst 他没有使用准备好的语句,而是直接执行查询。
-
“这种柴油在我的拖拉机上工作得很好,但是我把它放在我的车里后发动机就不能启动了?”打开error_reporting,看看你是否收到关于缺少扩展的错误。此外,将您的
exec包装在if语句中,看看它是否真的成功。 -
在 MySQL 中使用
date作为列名不是一个好习惯。 -
您没有做任何事情来尝试检查您的查询尝试是否有错误。我建议从那里开始。此外,您可能希望通过在查询字符串周围使用双引号使您在编写查询时更轻松,这样您就不必转义所有单引号。您还应该考虑使用@AustinBrunkhorst 建议的准备好的语句。