【发布时间】:2018-04-05 01:36:44
【问题描述】:
我有一个 ID 列表。对于测试,这大约是 20 项。
现在我想创建一个循环并从另一台服务器获取额外的数据。在这台服务器上,我准备了一个脚本 - 当你向它发送一个项目 ID 时,它会以 JSON 格式发回更多详细信息。
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);
vecho "<br>";
}
当我访问 mysite.abc 时,我会在给出项目 ID 时看到结果。但是当我运行脚本时,有时我有 1 个结果或 3 个结果和消息:
警告:mysql_fetch_array() 期望参数 1 是资源、数组 在第 65 行的 C:\wamp64\www\testfile.php 中给出
我应该怎么做?
【问题讨论】:
-
为什么要使用早已弃用的
mysql_代码库?它在多年前就停产了,并在 PHP7 中完全删除。不应使用此库编写新代码。它使您容易受到 SQL 注入攻击(由于缺乏参数化查询支持)和潜在的其他未修补漏洞。尽快切换到使用mysqli或PDO,然后学习如何编写参数化查询来保护您的数据免受恶意输入。请参阅bobby-tables.com 以获得对风险的简单说明以及一些用于安全编写查询的示例 PHP 代码。 -
对于错误本身,这意味着 $result 不是有效的结果集。据推测,您的查询由于某种原因失败了,并且您可能没有检查 mysql 错误(这应该在您运行查询之后但在开始循环之前完成)
-
这是 5 年前某人写的遗产。现在我在 mysqli 所有功能上替换了 mysql 并打开了 php7 但现在我们测试旧系统,如果测试可以,我们开始在 php7 上运行。我会从 mysql 中检查这个错误