Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
http\u build\u query()无法检索所需的查询,PHP_Php_Forms - Fatal编程技术网

http\u build\u query()无法检索所需的查询,PHP

http\u build\u query()无法检索所需的查询,PHP,php,forms,Php,Forms,我正在研究Bing搜索API: 代码如下: <?php if (isset($_GET['keyword'])) { $keyword = $_GET['keyword']; } else { echo 'Wrong!'; } $key = 'NNNNN'; //key for API $root = 'https://api.datamarket.azure.com/Bing/Search/'; $search = $root . 'Web?$format=json&Quer

我正在研究Bing搜索API: 代码如下:

<?php
if (isset($_GET['keyword'])) {
$keyword = $_GET['keyword'];
} else {
  echo 'Wrong!';
}
$key = 'NNNNN'; //key for API
$root = 'https://api.datamarket.azure.com/Bing/Search/';
$search = $root . 'Web?$format=json&Query=';
$req = $search . '\'' . $keyword . '\'';
$ch = curl_init($req);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $key . ":" . $key);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($ch);
$json = json_decode($resp);
foreach ($json->d->results as $item) {
$rss_item = array(
    'Title' => $item->Title,
    'Description' => $item->Description,
    'DisplayUrl' => $item->DisplayUrl,
    'Url' => $item->Url,
);
array_push($desArray, $item->Description);
array_push($rss_array, $rss_item);
}
for ($i = 0; $i < 50; $i++) {
    echo '<p class="bagi">' . '<a href="' . $rss_array[$i]['Url'] . '">' . $rss_array[$i]['Title'] . '</a>
        <a href="' . $rss_array [$i]['Url'] . '" target="_blank">' . '<img src="'.base_url().'TAMPILAN/images/open_new_tab.jpg" width="10px" height="10px" title="Open in new tab"></a>
            <br/>' .
    $rss_array [$i]['Description'] . '</br>' .
    '<hr/>' .
    '</p>';
}
?>
但它给了我50项搜索结果的列表,完全没有错误,但当我使用:

http://localhost/MSP/SignIn/cariBing.php?keyword=statistical+terms
它让我反复尝试获取非对象、未定义偏移量的属性。然后我意识到问题出在查询关键字上。代码无法处理这样一个有空格的关键字。所以我试了一下:

if (isset($_GET['keyword'])) {
$queryString = array();
foreach ($_GET as $keyword => $value) {
    $queryString[] = $keyword .'='. $value;
}
$queryString = http_build_query($queryString, $keyword);
} else {
echo 'Wrong!';
}
我用电脑测试了一下http://localhost/MSP/SignIn/cariBing.php?keyword=statistical+条件 它给了我结果,但结果指的是一个查询关键字,而不是我想要的统计术语,或者我键入的任何东西。 我错过了什么?非常感谢。我想你是说

$queryString = http_build_query(array("keyword"=>$_GET["keyword"]));
或者如果您想要所有$\u GET参数

$queryString = http_build_query($_GET);
最后一个代码段的替换应该是

if (isset($_GET['keyword'])) {
    $queryString = http_build_query($_GET);
} else {
    echo 'Wrong!';
}

如果你想将当前的$GET数据转换成查询字符串:http\u build\u query$GET。你没有在任何地方定义$关键字,因此你的代码没有任何作用。Marc B:你看不到它,因为我没有上传整个代码。我可以吗?@Fii那是因为你没有给它所需要的。。。您正在传递一个数组元素,当第一个参数需要数组时,它恰好是字符串。。。只需传入$\u GET或arraykeyword=>$\u GET[keyword];阅读错误消息并与PHP手册中给出的预期参数进行比较,我不知道,它仍然将输入的$keyword解释为keyword,:
if (isset($_GET['keyword'])) {
    $queryString = http_build_query($_GET);
} else {
    echo 'Wrong!';
}