从API请求提取字符串无效


Extract string from API request does not work

因此,我正在尝试编写一个.php文件,该文件应该从API调用中提取字符串(这里要提取的文本示例:https://gyazo.com/1efffc2360bd6aba15ece3437251aebd)

代码:

<?php
$item = $_GET['item'];
$item = str_replace("'"", "", $item);
$item = str_replace("''", "", $item);
$item = str_replace(" ", "%20", $item);
$item = str_replace("''", "", $item);
@include_once ("pdocon.php");
$stmt = $dbh->prepare("SELECT * FROM items WHERE name=?");
$stmt->execute(array($item));
$rs = $stmt->fetch(PDO::FETCH_ASSOC);
if(!empty($rs)) {
        if(time()-$rs["lastupdate"] < 604800) die($rs["cost"]);
}
$link = "https://bitskins.com/api/v1/get_item_price/?api_key=(NOTSHOWINGYOUGUYSMYAPIKEY)&names=".$item;
$string = file_get_contents($link);
$json = $string;
$obj = json_decode($json);
//print $obj->{"median_price"}; // 12345
//$obj = json_decode($string);
if($obj->{'status'} == "success") die("notfound");
$lowest_price = $obj->{'price'};
$lowest_price=str_replace("$", "", $lowest_price);
$lowest_price = (float)($lowest_price);
//$stmt = $dbh->prepare("DELETE FROM items WHERE name=?");
//$stmt->execute(array($item));
$stmt = $dbh->prepare("UPDATE items SET `cost` = ?,`lastupdate` = ? WHERE `name` = ?");
$stmt->execute(array($lowest_price, time(), $item));
$stmt = $dbh->prepare("INSERT INTO items (`name`,`cost`,`lastupdate`) VALUES (?, ?, ?)");
$stmt->execute(array($item, $lowest_price, time()));
echo $lowest_price;
?>

问题是代码没有提取我需要的字符串($lower_price变量)。我试着用hash市场名称值格式自己定义$item变量,并使用显示的脚本来运行它。没有结果。知道为什么吗?

谢谢。

反序列化JSON后,您需要访问price值,如:

$lowest_price = $obj->data->prices[0]->price;

话虽如此,您可能还需要考虑这样一个事实,即由于$obj->data->prices是一个数组,它可能包含多个元素。因此,如果您真的想确定"最低价格"(变量的名称),您可能需要对$obj->data->prices进行迭代,以找到数组中哪个项的price值最低。

你没有问过这个问题,但你的SQL更新/插入(upstart)也有一些奇怪的逻辑。如果您的目的是更新现有记录,或者在不存在记录的情况下插入新记录,则可以考虑INSERT ... ON DUPLICATE KEY UPDATE类型的查询。

我建议使用pdo而不是mysql,但这只是我的