2017-10-24 8 views
0

私はIDのリストを持っています。テストの場合、これは約20項目です。結果を待つことで、どのようにcURLでデータを取得できますか?

今、私はループを作り、別のサーバーから余分なデータを取得したいと思います。このサーバーではスクリプトを用意しました。アイテムIDを送信すると、JSON形式で詳細情報が返されます。

私がmysite.abcに行くと、アイテムIDを渡すと結果が表示されます。私は時々、スクリプトを実行するときしかし、私は1結果または3の結果を持っているとのメッセージ:

警告:\ wamp64 \ WWW \ testfile.php上:は、mysql_fetch_array()はCで指定された配列 、パラメータ1は資源であることを期待します行65

どうすればよいですか?

+0

長期的に廃止された 'mysql_'コードライブラリを使用しているのはなぜですか?何年も前に廃止され、PHP7で完全に削除されました。このライブラリを使用して新しいコードを書く必要はありません。 SQLインジェクション攻撃(パラメータ化されたクエリのサポートがないため)やパッチが適用されていない他の脆弱性が存在する可能性があります。できるだけ早く 'mysqli'や' PDO'を使うように切り替え、悪意のある入力からデータを保護するためにパラメータ化されたクエリを書く方法を学んでください。リスクの簡単な説明とクエリを安全に書くためのサンプルPHPコードについては、http://bobby-tables.comを参照してください。 – ADyson

+0

エラー自体については、$ resultが有効な結果セットではないことを意味します。おそらくあなたのクエリはなんらかの理由で失敗し、おそらくあなたはmysqlエラーをチェックしていません(これはクエリを実行した後、ループを開始する前に行うべきです)。 – ADyson

+0

誰かが5年後の遺産です。今、私はmysqliのすべての機能をmysqlに置き換え、php7をオンにしましたが、テストが正常に行われるならば古いシステムをテストして、php7でランニングを開始します。私はこのエラーをmysqlからチェックします – Wraith

答えて

1

チェックmysql_queryが有効なresourceタイプを返しました。

$result = mysql_query('SELECT column1, column2 FROM table WHERE 1=1'); // Change the SQL query with your 

if ($result) { 
    while($row = mysql_fetch_array($result)){ 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, "http://test.mysite.abc/call/itemdetail/id/".$row['id_item']); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $ret = curl_exec ($ch); 
     curl_close ($ch); 

     $result = json_decode($ret, true); 

     print_r($result); 
     echo "<br>"; 
    } 
} 

ベストプラクティス:、拡張子* mysql_を避けてください。この拡張モジュールはPHP 5.5.0では廃止され、PHP 7.0.0では削除されました。代わりに、MySQLiまたはPDO_MySQL拡張を使用してください。

あなたのケースにマルチカールを使用することを検討してください。詳細はanswerをご覧ください。

Cheerse !!

関連する問題