SQLite查询给出了错误

时间:2017-01-21 00:44:45

标签: php sqlite pdo

我正在运行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个字段。我超过了一些限制吗?

1 个答案:

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