您可能已经从我之前的问题中看到,我是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循环中的回显。我知道我在某个地方的那条线上已经搞砸了很多时间,但对于我的生活,我无法弄清楚在哪里。感谢帮助。谢谢!
答案 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>";
?>