【发布时间】:2014-09-12 17:15:26
【问题描述】:
好的,所以这使用了两件事,一个是带有 Steam 插件的 vbulletins 论坛,它允许用户使用 Steam 帐户在我的论坛上注册,它还使用来自 http://7daystodie-servers.com 网站的 API,这是一个具有 API 的投票网站我可以以一种或另一种方式用作奖励系统。到目前为止,我所做的一切都很好,我现在唯一的问题是使用正确的信息更新 vbulletin 数据库,如果 $pullinfo == 1,这是我的代码。
$connection = mysql_connect("$hostname","$data_username","$data_password") or die ("Couldn't connect to server.");
$db = mysql_select_db("$db_name", $connection) or die("Couldn't select database.");
$sql1 = mysql_query("SELECT DISTINCT steam_link, username FROM user WHERE steam_link IS NOT NULL AND TRIM(steam_link) <> '' AND username IS NOT NULL AND TRIM(username) <> ''");
while($row1 = mysql_fetch_array($sql1)){
$steamid = substr($row1[steam_link], 0, 17);
$checkvoted = 'http://7daystodie-servers.com/api/?object=votes&element=claim&key=wc5ablok4zpc1w3ljgofp5yuuedrgv8ycs6&steamid='.$steamid;
$pullinfo = file_get_contents($checkvoted);
if ($pullinfo == 2){
echo ''.$row1[username].' has already claimed reward for voting...<br />';
}
if ($pullinfo == 1){
$username = $row1[username];
echo ''.$row1[username].' has not claimed reward for voting...<br />';
$sql2 = mysql_query("UPDATE user SET `reputation`=(`reputation`+10) WHERE substr($row[steam_link], 0, 17) = $steamid");
}
if ($pullinfo == 0){
echo ''.$row1[username].' has not voted...<br />';
}
echo ''.$row1[username].''.$pullinfo.'<br />';
}
正如你所看到的,它做了两件事,一是从 API url 获取信息,它是“0”或“1”,然后我试图根据一个因素更新数据库信息,$row[steam_link ] 和 $steamid。我遇到的问题是这两个都是从一开始就从数据库中提取出来的,它们是同一回事。那么如何将 API 的返回与 $steamid 进行比较,以便更新数据库?
【问题讨论】:
-
mysql_*函数不再支持,它们是 officially deprecated,不再维护,将在未来。您应该使用PDO 或MySQLi 更新您的代码,以确保您的项目在未来的功能。 -
了解它们已被弃用,但我没有时间研究任何 PDO 或 mysqli 以了解是什么所以真的需要一些帮助,所以我有它临时住,直到我可以用 PDO 编写或 MySQLi
-
我看到mysql和mysqli的唯一区别是“i”。虽然我还没有机会阅读它的技术方面.. 只需添加 i
-
@EricSSH 如果我没记错的话 MySQLi 使用起来更安全,可以保护自己免受注射等事情的伤害,但如果我没记错的话,它只是更好的代码,我代表“改进”所以我猜没有当他们有改进的东西时,想使用旧的 MySQL,我只需要检查所有已更改的内容。但无论我是否使用 MySQLi,我仍然需要帮助解决我的问题,因为无论我使用 MySQL 还是 MySQLi,我仍然会遇到同样的问题。
-
$pullinfo = file_get_contents($checkvoted); if ($pullinfo == 2){在做什么?