0

PHP で cURL を使用して POST リクエストを作成しようとしています。( index.phpから) POST リクエストを行うコードがあり、それは正しいと思います。

次の部分は、POST リクエストからデータを抽出する必要がある API レイヤー ( api.php ) であり、ここで問題が発生しています。コードでは、index.php を使用して渡したパラメーター q の値を読み取ろうとしています。

両方のファイルのコードを次に示します。

index.php

<?php
    $handle = curl_init();
    curl_setopt_array(
        $handle,
        array(
            CURLOPT_URL => 'http://localhost:8888/restAPI/api.php',
            'q' => 'getCompanyId',
            'post_fields' => 'q=getCompanyId',
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => array(
                'q' => 'getCompanyId'
            ),
            CURLOPT_RETURNTRANSFER => true
        )
    );
    $response = curl_exec($handle);
    curl_close($handle);
?>

api.php

<?php
    require_once("Rest.inc.php");

    class API extends REST {

        public function processApi() {

            $func = $_REQUEST['q'];

            if((int)method_exists($this,$func) > 0){
                $this->$func();
            }
            else{
                $this->response('',404); 
            // If the method not exist with in this class, response would be "Page not found".
            }
        }
        public function getCompanyId(){
            $dbhost = 'localhost:8888';
            $conn = mysql_connect($dbhost, 'root', 'root');

            if (! $conn) {
                die('Could not connect - ' . mysql_error());
            }

            $sql = 'SELECT companyId FROM Companies';
            mysql_select_db('IRSocialBackend');
            $executeSql = mysql_query($sql);

            while($data = mysql_fetch_array($executeSql)){
                echo $data['companyId'];
            }

        }
    }
    //echo "here";
    $api = new API;
    $api -> processApi();
?>
4

1 に答える 1

0

補足: あなたの API は RESTFUL ではありません。REST は「HTTP リクエストを作成する」ことではありません。それを読んでください!

最初の間違い:

       array(
        CURLOPT_URL => 'http://localhost:8888/restAPI/api.php',
        'q' => 'getCompanyId',
        'post_fields' => 'q=getCompanyId',
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => array(
            'q' => 'getCompanyId'
        ),
        CURLOPT_RETURNTRANSFER => true
    )

ランダムな「q」と「post_fields」は、curlopt にフィールドを追加する方法ではありません。

api.phpでは、以下を割り当てます。

$dbhost = 'localhost:8888';
        $conn = mysql_connect($dbhost, 'root', 'root');

localhost:8888 があなたのウェブサーバーだと思いましたか? localhost:3306 がデフォルト ポート上にある場合、MySQL サーバーになります。

残りは、テーブル/DB 構造を知らずにデバッグするのは困難です。

于 2013-05-23T02:04:59.123 に答える