使用PDO查询错误MySQL

时间:2014-04-08 11:42:11

标签: php mysql sql pdo

我在使用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;

我阅读了其他帖子并尝试解决此问题,但错误仍然存​​在。 如果从控制台执行查询,我没有错误。

2 个答案:

答案 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
));

并在此处发布真实的查询,并使用您运行的实际代码。