对不起,如果这是个愚蠢的问题,我在PHP是个新手。
首先,我想做的是:
我正在从MYSQL中提取信息,并在页面上显示信息。具体而言,这一点:
while($rowsID = mysql_fetch_assoc($sIDD))
{
echo '<tr>';
foreach($rowsID as $key => $cell){
print '<td>'.$cell.'</td>';
}
这很好,并显示了我想要的信息。
从那个牢房里的信息,我想插入:
$sid = $rowsID['steamID'];
$key = '<yoink>';
$slink =file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . $key . '&steamids=' . $sid . '&format=json');
$myarray = json_decode($slink, true);
print '<img src=';
print $myarray['response']['players'][0]['avatarmedium'];
print '>'; `
这不管用。它不会从单元格中提取实际数字并将其放入$sid中。我在这里不知所措。我在谷歌上搜索了几天,我的大部分代码都是从我在这里找到的部分中提取出来的,所以我甚至不确定我是否在正确的轨道上。我希望我已经清楚地解释了我的问题,并提供了足够的信息。谢谢你的帮助。
完整的代码:
<?php
$hostname = ""; // eg. mysql.yourdomain.com (unique)
$username = ""; // the username specified when setting-up the database
$password = ""; // the password specified when setting-up the database
$database = ""; // the database name chosen when setting-up the database (unique)
$imgR = "<td><img src='/images/red-dot2.png".$cell['red-dot2.png']."'></td>";
$imgG = "<td><img src='/images/green-dot2.png".$cell['green-dot2.png']."'></td>";
setlocale(LC_MONETARY, 'en_US');
// Line 10
$_GET['id'];
$name = $_GET['id'];
$link = mysql_connect($hostname,$username,$password);
mysql_select_db($database) or die("Unable to select database");
$sql = "SELECT Members.PID, Members.ID, Members.Steam_Name, Members.SG_ID\n"
. "FROM Members WHERE Members.PID = '$name%' ";
//Line 20
$gas = "SELECT Giveaways.title, Giveaways.cv, Members_1.Page, Giveaways.B, Giveaways.entries\n"
. "FROM Members_1 INNER JOIN (Members INNER JOIN Giveaways ON Members.SG_ID = Giveaways.giver) ON Members_1.SG_ID = Giveaways.status\n"
. "WHERE (((Members.PID)='$name'))";
$cvGiven = "SELECT Members.PID, Sum(Giveaways.cv) AS SumOfcv\n"
. "FROM Members INNER JOIN Giveaways ON Members.SG_ID = Giveaways.giver\n"
. "GROUP BY Members.PID\n"
. "HAVING (((Members.PID)=$name)) ";
//Line 30
$winResults = "SELECT Giveaways.title, Members_1.Page, Giveaways.cv, Giveaways.B, Giveaways.entries\n"
. "FROM Members INNER JOIN (Members_1 INNER JOIN Giveaways ON Members_1.SG_ID = Giveaways.giver) ON Members.SG_ID = Giveaways.status\n"
. "WHERE (((Members.PID)=$name)) ";
$cvWon = "SELECT Members.PID, Sum(Giveaways.cv) AS SumOfcvW\n"
. "FROM Members INNER JOIN Giveaways ON Members.SG_ID = Giveaways.status\n"
. "GROUP BY Members.PID\n"
. "HAVING (((Members.PID)=$name)) ";
$sID = "SELECT Members.ID\n"
. "FROM Members\n"
. "WHERE (((Members.PID)=$name))";
$get = "SELECT Members.PID, Members.SG_ID\n"
. "FROM Members";
//Line 40
$result = mysql_query($sql,$link) or die("Unable to select: ".mysql_error());
$result2 = mysql_query($gas,$link) or die("Unable to select: ".mysql_error());
$cvTotal = mysql_query($cvGiven,$link) or die("Unable to select: ".mysql_error());
$cvTotalW = mysql_query($cvWon,$link) or die("Unable to select: ".mysql_error());
$wins = mysql_query($winResults,$link) or die("Unable to select: ".mysql_error());
$sIDD = mysql_query($sID,$link) or die("Unable to select: ".mysql_error());
$getN= mysql_query($get,$link) or die("Unable to select: ".mysql_error());
if (!$result) {
die("Query to show fields from table failed");
}
if (!$result2) {
die("Query to show fields from table failed");
}
if (!$cvTotal) {
die("Query to show fields from table failed");
}
if (!$sIDD) {
die("Query to show fields from table failed");
}
if (!$getN) {
die("Query to show fields from table failed");
}
//Line 60
if (!$cvTotalW) {
die("Query to show fields from table failed");
}
if (!$wins) {
die("Query to show fields from table failed");
}
///////////////////////////////////////////////////////////////////////////////////
//////////////////////////Start Structure//////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////
//Display name
echo '<h2>[[Breadcrumbs?showHomeCrumb = 0 ]]</h2>';
//Display Steam ID
$sid = $rowsID['steamID'];
$key = '';
$slink = file_get_contents('http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=' . $key . '&steamids=' . $sid . '&format=json');
$myarray = json_decode($slink, true);
print $myarray['response']['players'][0]['avatarmedium'];
// print '>';
print $sid;
echo '<table>';
while($rowsID = mysql_fetch_assoc($sIDD))
{
echo '<tr>';
foreach($rowsID as $key => $cell){
print '<th>Steam ID:</th>'.'<td>'.$cell.'</td>';
}
echo'</tr>';
}
echo '</table>';
//CV totals
$row = mysql_fetch_assoc($cvTotal);
$sum = $row['SumOfcv'];
$rowW = mysql_fetch_assoc($cvTotalW);
$sumW = $rowW['SumOfcvW'];
//Start CV table
echo '<div class=cv>';
echo '<table>';
echo '<tr>';
echo '<td>Total CV Given:</td>';
echo '<td> $'. number_format ($sum,2). '</td>';
echo '<tr>';
echo "<td>Total CV Won:</td>";
echo '<td> $'. number_format ($sumW,2). '</td>';
echo '</tr>';
echo "</tr>\n\n";
echo '</table>';
echo '</div>';
//Start Giveaways List
echo '<h3>Giveaways</h3>';
echo '<div class=llamatable>';
echo"<table>\n";
echo'<th>Game</th><th>CV</th><th>Winner</th><th></th><th>NB?</th><th>Entries</th>';
while($row = mysql_fetch_assoc($result2)) {
print "<tr>\n";
//Is it a bundle?
foreach($row as $key => $cell){
if ($key == 'B' && strpos($cell,'1') !== false){
$cell = str_replace('1',$cell,$imgR);
}
elseif($key == 'B' && $cell == "0"){
$cell= $imgG;
}
//Set cv format
if($key == 'cv'){
$cell= '$'. number_format ($cell,2); //Line 80
}
//set breaks if multiple winners
if (strpos($cell,',') !== false){
$cell= str_replace(',','<br />',$cell);
}
if($key == 'status' && strpos($cell, $nameName)){
$cell = $test;
}
echo"<td>$cell</td>\n";
}
print "</tr>\n";
//print "</br>\n";
}// End Giveaways list
//////////////////////////////////////////////////////////////////////////////////////////
print "</table>\n";
print "</div>";
//Start Wins List
echo '<h3>Wins</h3>';
echo '<div class=llamatable>';
//$fields_num = mysql_num_fields($results);
echo"<table>\n";
echo'<th>Game</th><th>Contributor</th><th>cv</th><th></th><th>NB?</th><th>Entries</th>';
while($row = mysql_fetch_assoc($wins)) {
print "<tr>\n";
//Is it a bundle?
foreach($row as $key => $cell){
if ($key == 'B' && strpos($cell,'1') !== false){
$cell = str_replace('1',$cell,$imgR);
} //Line 110
elseif($key == 'B' && $cell == "0"){
$cell= $imgG;
}
//Set cv amount
if($key == 'cv'){
$cell= '$'. number_format ($cell,2);
}
//set breaks if multiple winners
if (strpos($cell,',') !== false){
$cell= str_replace(',','<br />',$cell);
}
echo"<td>$cell</td>\n";
}
print "</tr>\n";
}// End wins list
print "</table>\n";
echo "</div>";
//echo '</table>';
//echo '</div>';
mysql_close($link);
?>
我意识到这段代码可能是一场灾难,我计划一旦它开始工作,并更充分地理解我所看到的,我就会清理它。我已经复制并修补了来自许多不同来源的代码,并尝试了自己的代码。别恨我。:-)
发布于 2014-03-14 01:59:38
有几个问题。首先,也是最重要的,在$rowsID
变量有数据之前使用它。
$sid = $rowsID['steamID'];
^-------- You don't assign this a value until 12 lines later, here:
while($rowsID = mysql_fetch_assoc($sIDD))
其次,您应该而不是使用mysql_*
函数。相反,您可以查看米斯里或PDO,以替代不推荐的mysql函数。
第三,净化您的输入。您正在获取$_GET['id']
中的值,并将其直接传递给查询。你好,小鲍比桌子。
解决这些问题应该能让你上路。
有几件事你可能想要考虑改进:
Llama
,会发生什么?steamids
变量。这减少了必须往返于Valve服务器的次数。https://stackoverflow.com/questions/22388946
复制相似问题