-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

このようにしてみてください:

 <?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 に答える
0

配列要素を文字列に補間する場合、次の 2 つの方法があります。

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

また:

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

配列変数を で囲まない場合は{}、キーを囲む引用符を除外する必要があります。キーは自動的にリテラル文字列と見なされます。

: この仮定は、文字列補間でのみ行われます。あなたは書くことができません:

$foo = $array[キー];

この場合、keyはリテラル文字列ではなく、定数の名前として解釈されます。

2 番目の形式は、他の式をキーに入れることができるため、より一般的です。オブジェクト参照でも使用できます。

それを行う他の方法は、連結を使用することです。

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

またはsprintf():

$string = sprintf("blah blah %s blah blah", $array['key']);
于 2013-02-04T19:00:53.687 に答える