【发布时间】:2014-04-08 11:42:10
【问题描述】:
我在使用 MySQL 和 PHP 执行查询时遇到问题。 我使用 PDO 连接到数据库,当我运行查询时,它返回以下错误:
errorCode = 42000
errorInfo = array ([0] => 00000 [1] => [2] =>)
建议修改后,我使用的代码是这样的
require "connPDO.php";
ini_set('display_errors',1);
error_reporting(E_ALL);
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $PDO->prepare("INSERT INTO 'titacc' ('file', 'RGS', 'RGP', 'RGD', 'RGDG', 'RGOG', 'DenOrg', 'CodFiscOrg', 'TipoOrg', 'IntrTipoTass', 'IntrIncid', 'DenLocale', 'CodLocale', 'DataEv', 'OraEv',
'TipoGen', 'IncidGen', 'OrdPostoCodOrd', 'OrdPostoCapienza', 'TitoloEv', 'ProduttoreCinema', 'Autore', 'Esecutore', 'Nazionalita', 'Distributore', 'TATipoTit', 'TAQta',
'TACorrLordo', 'TAPrevendita', 'TAIVACorr', 'TAIVAPrev', 'TAImpPrest') VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?");
$stmt->execute(array(
$file,
$RGS,
$RGP,
$RGD,
$RGDG,
$RGOG,
$DenOrg,
$CodFiscOrg,
$TipoOrg,
$IntrTipoTass,
$IntrIncid,
$DenLocale,
$CodLocale,
$DataEv,
$OraEv,
$TipoGen,
$IncidGen,
$OrdPostoCodOrd,
$OrdPostoCapienza,
$TitoloEv,
$ProduttoreCinema,
$Autore,
$Esecutore,
$Nazionalita,
$Distributore,
$TATipoTit,
$TAQta,
$TACorrLordo,
$TAPrevendita,
$TAIVACorr,
$TAIVAPrev,
$TAImpPrest
));
if (! $stmt->exe1cute() )
{
echo "<b>Errore nella query!</b>"; echo"<br/>";
print_r($stmt->errorCode()); echo"<br/>";
print_r($stmt->errorInfo()); echo"<br/>";
print_r($PDO->errorInfo()); echo"<br/>";
die();
} else {
echo "<b>Inserimento avvenuto con successo</b>";
}
$PDO = null;
我阅读了其他帖子并尝试解决此问题,但错误仍然存在。 如果从控制台执行查询,我没有错误。
【问题讨论】:
-
我还不知道你的问题出在哪里,但是当使用像 PDO 这样的扩展时,你还应该使用准备好的语句(bindParam() 或 bindValue(),或者你可以直接替换它们
execute()-函数)。这使您的代码更易于理解和维护,并且可以安全地防止 SQL 注入。 -
做
echo $query看看输出是什么,你的语法有错误。另外,你为什么要这样使用 pdo? -
@Kasipovic:我用 echo 试过了,没有收到任何错误...
-
@Padarom:感谢您提供的信息。我已经阅读并申请了,但错误总是一样的