第一个问题。和我一起晒黑!
我正在尝试让mysql查询的某个单元格成为我最终创建的用户配置文件的超链接。我可以将所有内容都作为链接,但不仅仅是名称字段。现在我只是显示所有显示的链接到主键(playerID)以进行测试。
我知道问题出现在这里:if (($cell->name)=='fName')
任何帮助都会很棒。这是我第一次使用mysql和php,所以随时可以告诉我其他错误。谢谢!
<?php
// db login info
include $_SERVER['DOCUMENT_ROOT'] . '/includes/db_login.php';
// connecting, selecting, & error messages
if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");
if (!mysql_select_db($db))
die("Can't select database");
// get parsed playerID
$id = $_GET[id];
$result = mysql_query("SELECT *
FROM players p
LEFT JOIN baseball b ON p.playerID = b.playerID
LEFT JOIN hockey h ON p.playerID = h.playerID
LEFT JOIN football f ON p.playerID = f.playerID
WHERE p.playerID = '$id';");
if (!$result) {
die("Query to show fields from table failed");
}
$fields_num = mysql_num_fields($result);
echo "<table border='1' cellpadding='1'><tr>";
// printing column headers
for($i=0; $i<$fields_num; $i++)
{
$field = mysql_fetch_field($result);
echo "<td><b>{$field->name}</b></td>";
}
echo "</tr>\n";
// printing table rows
while($row = mysql_fetch_row($result))
{
echo "<tr>";
foreach($row as $cell){
if (($cell->name)=='fName'){
echo "<td><a href=\"info.php?id={$row[0]}\">$cell</a></td>";
}
else {
echo "<td>$cell</td>";
}
}
echo "</tr>\n";
}
echo "</table>";
// clear result variable
mysql_free_result($result);
mysql_close($result);
echo "<a href=\"testing.php\">Back</a>";
?>
答案 0 :(得分:0)
对我来说,你需要这样的东西:
<?php
// db login info
include $_SERVER['DOCUMENT_ROOT'] . '/includes/db_login.php';
// connecting, selecting, & error messages
if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");
if (!mysql_select_db($db))
die("Can't select database");
// get parsed playerID
$id = $_GET[id];
$result = mysql_query("SELECT *
FROM players p
LEFT JOIN baseball b ON p.playerID = b.playerID
LEFT JOIN hockey h ON p.playerID = h.playerID
LEFT JOIN football f ON p.playerID = f.playerID
WHERE p.playerID = '$id';");
if (!$result) {
die("Query to show fields from table failed");
}
print_r ($result);
$fields_num = mysql_num_fields($result);
echo "<table border='1' cellpadding='1'><tr>";
echo "<td><b>SCHMOHAWKS</b></td><tr>";
// printing column headers
for($i=0; $i<$fields_num; $i++)
{
$field = mysql_fetch_field($result);
echo "<td><b>{$field->name}</b></td>";
}
echo "</tr>\n";
// printing table rows
// koala note: use mysql_fetch_assoc instead
while(($row = mysql_fetch_assoc($result)) != FALSE){
echo "<tr>";
// $row is array... foreach( .. ) puts every element
// of $row to $cell variable
foreach($row as $cell_name => $cell){
// cell name will be the associative array's key
// so things are as simple as this:
if ($cell_name=='fName'){
echo "<td><a href=\"info.php?id=$row[0]\">$cell</a></td>";
}
else {
echo "<td>$cell</td>";
}
}
echo "</tr>\n";
}
echo "</table>";
// clear result variable
mysql_free_result($result);
mysql_close($result);
echo "<a href=\"testing.php\">Back</a>";
答案 1 :(得分:0)
注意:您可能应该使用PDO,因为如果我理解正确,您已弃用的功能已被弃用。
显然我的答案不符合您的预期,甚至没有投票,但它应该有效。也许不是,如果你只是复制并粘贴它,因为我可能在你的代码的其余部分遗漏了一些东西,但原则就在那里。使用mysql_fetch_assoc
获取一个关联数组,其中包含列名作为键。循环遍历数组并检查键以查找要以不同方式处理的特殊情况。
无论哪种方式,您都需要学习如何阅读文档,更重要的是如何使用函数var_dump
来查看您正在处理的内容。例如,尝试运行以下命令:
while($row = mysql_fetch_assoc($result))
{
var_dump($row);
}
输出什么?它能给你你的想法吗?它实际上是一个数组吗?按键看起来像你期望的那样吗?接下来你可以尝试运行它:
while($row = mysql_fetch_assoc($result))
{
foreach($row as $name => $value)
var_dump($name, $value);
break; // Skip rest of rows in this case
}
名称和价值应该是什么?你要做的事情并不是太难,如果你只是复制并粘贴代码而不试图了解正在发生的事情,你就不会学到太多东西:)
在你的循环中,我不确定你要做什么,但这应该有效:
while($row = mysql_fetch_assoc($result))
{
echo "<tr>";
foreach($row as $name => $value)
{
if ($name == 'fName')
printf('<td><a href="info.php?id=%u">%s</a></td>', $row['id'], htmlspecialchars($value));
else
printf('<td>%s</td>', htmlspecialchars($value));
}
echo "</tr>\n";
}
重要的变化是:
$name =>
添加到foreach循环以在循环期间访问该名称。printf
和htmlspecialchars
更安全地打印您的值。