-2

您可能已经从我之前的问题中看到了,我对 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

4 回答 4

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>过。我在上面解决了这个问题。

于 2013-02-04T18:56:39.023 回答
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。

于 2013-02-04T18:57:01.567 回答
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']);
于 2013-02-04T19:00:53.687 回答
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>";
  ?>
于 2013-02-04T19:02:18.587 回答