我正在运行PHP PDO 5.6.29。这是我的代码:
$QsoId = $SQLiteData["QsoId"];
$SQLiteData["MyAntenna"] = $ODBCAnt;
$query = sprintf("INSERT INTO Log (QsoId, MyAntenna) VALUES (%s, '%s')",$QsoId, $ODBCAnt);
$qry = $SQLite["connection"]->prepare($query);
/* bind params */
$qry -> bindParam(':QsoId', $QsoId, PDO::PARAM_INT);
$qry -> bindParam(':MyAntenna', $ODBCAnt, PDO::PARAM_STR);
$res = $qry->execute();
我收到消息“SQLSTATE [HY000]:一般错误:25个绑定或列索引超出范围”的PDOException“
我正在尝试更新MyAntenna字段,但我正在使用QSOId作为唯一的记录定位器。我提前知道这条记录存在并且可以找到。我不想添加新记录。记录中有138个字段。我超过了一些限制吗?
答案 0 :(得分:0)
根据您的说法,您似乎想要更新现有记录而不是插入。您正在进行的错误可能是因为QsoId字段是主键字段,仅允许使用唯一ID(使用相同ID执行插入将意味着具有相同ID的两行)
你要做一个UPDATE语句,你会做类似下面的事情(未经测试):
$QsoId = $SQLiteData["QsoId"];
$SQLiteData["MyAntenna"] = $ODBCAnt;
$query = "
UPDATE `Log`
SET `MyAntenna` = :MyAntenna
WHERE `QsoId` = :QsoId ");
$qry = $SQLite["connection"]->prepare($query);
/* bind params */
$qry -> bindParam(':QsoId', $QsoId, PDO::PARAM_INT);
$qry -> bindParam(':MyAntenna', $ODBCAnt, PDO::PARAM_STR);
$res = $qry->execute();