我制作了这个PHP代码来从API获得结果,但它不起作用。我为变量做了一些回声,检查它们是否出现在屏幕上但仍然没有显示出来。任何解决方案或想法为什么?
感谢。
<?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");
$code='SELECT auth FROM auth where id=1';
echo $code;
$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=(an api key here)&code=".$code"&names=".$item;
$string = file_get_contents($link);
$json = $string;
$obj = json_decode($json);
echo $obj;
//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;
?>
更新:由于某种原因,结果不会导入数据库,因此我会尝试将所有内容分解为更小的部分: 这是来自pdocon.php的代码:
<?php
$user="";
$pass="";
try {
$dbh = new PDO('mysql:host=localhost;dbname=testjackpot', $user, $pass);
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
这是表auth的样子: https://gyazo.com/75ea3a77773820f0c3adbdc24fc99185
这是API调用的结果: https://gyazo.com/efe5680baad104be97281c5dac3d2c58
出于某种原因,即使做print_r($ code),也就是说,从这个php生成的网页上没有显示任何内容。
UPDATE2:
试图使用
<?php
$item = $_GET['item'];
$item = str_replace("\"", "", $item);
$item = str_replace("\'", "", $item);
$item = str_replace(" ", "%20", $item);
$item = str_replace("\\", "", $item);
@include_once ("set.php");
$code=mysql_query("SELECT auth FROM auth where id=1");
echo $code;
$rs = mysql_query("SELECT * FROM items WHERE name='$item'");
if(mysql_num_rows($rs) > 0) {
$row = mysql_fetch_array($rs);
if(time()-$row["lastupdate"] < 3600) die($row["cost"]);
}
$link = "https://bitskins.com/api/v1/get_item_price/?api_key=(code)&code=".$code."&names=".$item."&delimiter=!END!";
$string = file_get_contents($link);
echo $string;
$obj = json_decode($string);
if($obj->{'success'} == "0") die("notfound");
$lowest_price = $obj->data->prices[0]->price;
$lowest_price[strlen($lowest_price)] = 0;
$lowest_price = str_replace("$","",$lowest_price);
$lowest_price = (float)($lowest_price);
mysql_query("DELETE FROM items WHERE name='$item'");
mysql_query("INSERT INTO items (`name`,`cost`,`lastupdate`) VALUES ('$item','$lowest_price','".time()."')");
echo $lowest_price;
?>
仍未显示任何内容。 UPDATE3:对于上面的最后一个代码,我终于得到了一些东西:gyazo。 COM / 9fde818695abac2f4fe7997482ba5865
答案 0 :(得分:0)
您的语法错误 - $code
和"&names
之间必须有一个点
$link = "https://bitskins.com/api/v1/get_item_price/?api_key=(an api key here)&code=".$code."&names=".$item;
要查看您所犯的错误,您可以添加
php_flag display_errors on
到您的.htaccess文件(仅限该网站的开发者版本)
答案 1 :(得分:0)
在include_once之前没有@的情况下尝试一下。可能路径错误或文件无法访问。