我在使用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;
我阅读了其他帖子并尝试解决此问题,但错误仍然存在。 如果从控制台执行查询,我没有错误。
答案 0 :(得分:3)
使用准备好的陈述。
$st = $pdo->prepare("INSERT INTO `table`(`col1`, `col2`) VALUES (:col1value, :col2value)");
然后执行给出参数
$st->execute(array(
'col1value'=>$value1,
'col2value'=>$value2
));
http://www.php.net/manual/en/pdostatement.execute.php#109030
答案 1 :(得分:1)
将您的代码更改为
ini_set('display_errors',1);
error_reporting(E_ALL);
$PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $PDO->prepare("INSERT INTO tbl VALUES (?, ?, ... ?");
$stmt->execute(array(
$col1,
$col2,
...
$col31
));
并在此处发布真实的查询,并使用您运行的实际代码。