为了账号安全,请及时绑定邮箱和手机立即绑定

SQLSTATE[IMSSP]:查询的活动结果不包含任何字段

SQLSTATE[IMSSP]:查询的活动结果不包含任何字段

PHP
缥缈止盈 2021-11-19 16:24:25
我的 PHP 脚本中出现以下错误,该脚本使用 PDO 在 SQL Server 上执行一些插入查询。SQLSTATE[IMSSP]:查询的活动结果不包含任何字段。我不使用任何存储过程,并附加查询SET NOCOUNT ON......也没有帮助。该代码似乎已按预期插入了所有记录,但错误消息使我感到困惑。这是一个简化的代码,根据要求......<?php    $pdo = new PDO('sqlsrv:Server=SVR;Database=app', 'app', 'pass', [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]);    try {        $stmt = $pdo->prepare('SELECT id FROM nation');        $stmt->execute();        while ($result = $stmt->fetch(PDO::FETCH_COLUMN)) {            $ch = curl_init();            curl_setopt($ch, CURLOPT_URL, "http://somegame.com/api/nation/id=$result&key=myapikey");            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);            curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);            $nation = curl_exec($ch);            $json = $nation;            $nation = json_decode($nation, true);            $stmt = $pdo->prepare("INSERT INTO nation_record(nation_id,as_on,json) VALUES (?,?,?,?)");            $stmt->execute([ $result, date("Y-m-d"), $json ]);        }    } catch (PDOException $e) {        api_log($pdo, $e->getMessage());    }    api_log($pdo, 'Completed successfully!');    function api_log($pdo, $desc) {        $stmt = $pdo->prepare("INSERT INTO api_log(calling_api, description) VALUES (?,?)");        $stmt->execute([ 'myscript', $desc ]);    }
查看完整描述

1 回答

?
白板的微信

TA贡献1883条经验 获得超3个赞

考虑以下:


错误的原因是您$stmt为SELECTandINSERT语句使用了一个变量,并且在第一个INSERT语句之后while ($result = $stmt->fetch(PDO::FETCH_COLUMN)) ...生成了错误。为INSERT语句使用不同的变量。

该INSERT语句在 中有四个参数占位符prepare(),但在 中只有三个值execute()。

用于PDOStatement::fetchColumn返回一行中的一列。

代码:


<?php


    ...

    while ($result = $stmt->fetchColumn(0)) {

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, "http://somegame.com/api/nation/id=$result&key=myapikey");

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

        $nation = curl_exec($ch);


        $json = $nation;

        $nation = json_decode($nation, true);


        $stmt2 = $pdo->prepare("INSERT INTO nation_record(nation_id,as_on,json) VALUES (?,?,?)");

        $stmt2->execute([$result, date("Y-m-d"), $json ]);

    }


...

?>


查看完整回答
反对 回复 2021-11-19
  • 1 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信