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

我的 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 ]);

    }


缥缈止盈
浏览 195回答 1
1回答

白板的微信

考虑以下:错误的原因是您$stmt为SELECTandINSERT语句使用了一个变量,并且在第一个INSERT语句之后while ($result = $stmt->fetch(PDO::FETCH_COLUMN)) ...生成了错误。为INSERT语句使用不同的变量。该INSERT语句在 中有四个参数占位符prepare(),但在 中只有三个值execute()。用于PDOStatement::fetchColumn返回一行中的一列。代码:<?php&nbsp; &nbsp; ...&nbsp; &nbsp; while ($result = $stmt->fetchColumn(0)) {&nbsp; &nbsp; &nbsp; &nbsp; $ch = curl_init();&nbsp; &nbsp; &nbsp; &nbsp; curl_setopt($ch, CURLOPT_URL, "http://somegame.com/api/nation/id=$result&key=myapikey");&nbsp; &nbsp; &nbsp; &nbsp; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);&nbsp; &nbsp; &nbsp; &nbsp; curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);&nbsp; &nbsp; &nbsp; &nbsp; curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);&nbsp; &nbsp; &nbsp; &nbsp; $nation = curl_exec($ch);&nbsp; &nbsp; &nbsp; &nbsp; $json = $nation;&nbsp; &nbsp; &nbsp; &nbsp; $nation = json_decode($nation, true);&nbsp; &nbsp; &nbsp; &nbsp; $stmt2 = $pdo->prepare("INSERT INTO nation_record(nation_id,as_on,json) VALUES (?,?,?)");&nbsp; &nbsp; &nbsp; &nbsp; $stmt2->execute([$result, date("Y-m-d"), $json ]);&nbsp; &nbsp; }...?>
打开App,查看更多内容
随时随地看视频慕课网APP