PHP中的链接回声

时间:2013-02-04 18:52:15

标签: php mysql hyperlink

您可能已经从我之前的问题中看到,我是PHP(和编码)的新手,我坚持这一点。

我已创建此代码(尽量不要畏缩):

<?php
$result = mysql_query("SELECT `user_id`, `username`, `email` FROM `users` WHERE `approved` = '0' ORDER BY `username`;");

    echo "<table>";
        while($row = mysql_fetch_array($result))
        {
        echo "<tr><td align=center>" . htmlspecialchars($row['username']) . "</td><td> | </td><td align=center>" . htmlspecialchars($row['email']) . " </td><td> | </td><td><a href=\"approve_user.php?phpuser_id=$row['user_id']\"><font color=\"green\">Approve</font></a> | </td><td><a href=\"deny_user.php?user_id=$row['user_id']\"><font color=\"red\">Delete</font></a></td>";
        }
    echo "</table>";
?>

它连接到另一个文件中的数据库,成功返回所有结果等。但是,当我尝试添加“批准”和“删除”链接时出现问题。我希望批准链接转到approve_user.php?user_id=$row['user_id'],我希望删除链接转到deny_user.php?user_id=$row['user_id']

我收到了错误:

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\xampp\htdocs\liste\approve.php on line 22

第22行是while循环中的回显。我知道我在某个地方的那条线上已经搞砸了很多时间,但对于我的生活,我无法弄清楚在哪里。感谢帮助。谢谢!

4 个答案:

答案 0 :(得分:0)

您必须将{}放在PHP字符串中的数组变量上:

$text = "Variable = {$_GET["user_input"]}\nSimple variable = $var";

表示您的代码应该是这样的(我添加了换行符以使代码更易读):

echo "<tr><td align=center>" . htmlspecialchars($row['username']) . "</td><td> | </td>\n";
echo "<td align=center>" . htmlspecialchars($row['email']) . " </td><td> | </td><td><a href=\"approve_user.php?phpuser_id={$row['user_id']}\"><font color=\"green\">Approve</font></a> | </td>\n";
echo "<td><a href=\"deny_user.php?user_id={$row['user_id']}\"><font color=\"red\">Delete</font></a></td></tr>\n\n";

您还缺少</tr> 。我修正了上面的内容。

答案 1 :(得分:0)

快速解决方法是连接变量:

echo "<tr><td align=center>" . htmlspecialchars($row['username']) . "</td><td> | </td><td align=center>" . htmlspecialchars($row['email']) . " </td><td> | </td><td><a href=\"approve_user.php?phpuser_id=" . $row['user_id'] . "\"><font color=\"green\">Approve</font></a> | </td><td><a href=\"deny_user.php?user_id=" . $row['user_id'] . "\"><font color=\"red\">Delete</font></a></td>";

但是,代码可以从使其更具可读性或使用模板系统中受益,或者至少考虑将逻辑和表示分开。


附注:不建议使用mysql_*库,建议升级到PDO或MySQLi。

答案 2 :(得分:0)

当您将数组元素插入到字符串中时,有两种方法可以执行此操作:

$string = "blah blah $array[key] blah blah";

或:

$string = "blah blah {$array['key']} blah blah";

如果没有用{}包围数组变量,则必须省略键周围的引号。该键自动被假定为文字字符串。

注意:此假设仅 在字符串插值中完成。你不能写:

$ foo = $ array [key];

在这种情况下,key被解释为常量的名称,而不是文字字符串。

第二种格式更通用,因为您可以在键中放入其他表达式。它也可以与对象引用一起使用。

其他方法是串联:

$string = "blah blah " . $array['key'] . " blah blah";

sprintf()

$string = sprintf("blah blah %s blah blah", $array['key']);

答案 3 :(得分:0)

尝试这样:

 <?php
  $result = mysql_query("SELECT `user_id`, `username`, `email` FROM `users` WHERE `approved` =  '0' ORDER BY `username`;");

  echo "<table>";
  while($row = mysql_fetch_array($result))
  {
        $username=$row['username'];
        $email = $row['email'];
        $userID = $row['user_id'];
        echo "<tr><td align=center>" . htmlspecialchars($username) . "</td><td> | </td><td align=center>" . htmlspecialchars($email) . " </td><td> | </td><td><a href=\"approve_user.php?phpuser_id=$userID\"><font color=\"green\">Approve</font></a> | </td><td><a href=\"deny_user.php?user_id=$userID\"><font color=\"red\">Delete</font></a></td>";
  }
  echo "</table>";
  ?>