1

SQL データをプルしようとしています。ユーザーのログインはユーザー名ですが、それを他のユーザーに表示したくありません。したがって、私が定義したナイスネームです。これは、ユーザーのログイン情報とは関係のない別の表示名です。メッセージを送信しようとすると、送信者フィールドに表示名を表示する必要があります。from フィールドのクエリを介してデータが送信されない理由を知っている人はいますか?

<?php
$link = mysqli_connect("$server", "$user", "$pass", "$webdb");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT nicename FROM user WHERE name=$_SESSION['admin_login']";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$display_name = $row['nicename'];
{
echo '<input name="from" type="hidden" value="' .$display_name.'">';
}
mysqli_free_result($result);
mysqli_close($link);
?>

さて、クエリを実行し、表示名変数を修正しました。私が受け取ったクエリ。

INSERT INTO messages (`owner`, `from`, `content`, `date`, `title`) VALUES ('Morgan', '', 'Query', 'Oct/16/2012', 'Testing The ')

From 変数にはまだ何も表示されていません。私は自分のサイトにデバッグページを追加し、そこでクエリを次のように入力しました

$query = "SELECT nicename FROM user WHERE username=$_SESSION[admin_login]";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);

次に、クエリをエコーし​​、$row[nicename] もエコーしました。ページに返された場所: SELECT nicename FROM user WHERE username= * *<-- ユーザー名を追加しました。ただし、 $row[nicename] のエコーは、ページに結果を返しません。

{
echo $query;//<--Returns Query with the correct login variable.
echo '<br>';
echo $row['nicename'];//<--Returns no info.
}
4

4 に答える 4

2

ここでエラーを見つけた人々の助けを借りてデバッグした後、私のクエリは次のようになりました:

$query = "SELECT nicename FROM user WHERE username='$_SESSION[admin_login]'";

フォームへの入力から

echo '<input name="from" type="hidden" value="' .$display_name.'">';

また、$display_nameは$row ['nicename']として定義されています。これらの設定では、[差出人]フィールドに表示名が表示され、ログイン名は非表示のままになります。助けてくれたみんなに感謝します。

于 2012-10-16T17:27:10.647 に答える
2

これを変える:

$display_name = $row['title'];

これに:

$display_name = $row['nicename'];
  • 私は常に、SQL ステートメントでセッション変数の代わりに通常の PHP 変数を使用することを好みます。これにより、データ型との混乱を避けることができます。

    $username = $_SESSION['admin_login'];
    $query = "SELECT nicename FROM user WHERE name = '$username'";

もう一つの例:

$chatroomNumber = intval($_SESSION['chatroomid']);
$query = "SELECT * FROM rooms WHERE chatroomnumber = $chatroomNumber";

これにより、SQL ステートメントで int を使用していることを確認できます。

お役に立てれば。

于 2012-10-16T16:05:19.940 に答える
1

内容によって$_SESSION['admin_login']は、引用することをお勧めします。

$query = 'SELECT nicename FROM user WHERE name="' . $_SESSION['admin_login'] . '"';
于 2012-10-16T15:58:24.590 に答える
1

まず、ブラウザで from のソース コードをチェックして、正しい値で非表示の入力が作成されていることを確認します。

非表示に問題がない場合は、フォームを処理する PHP ファイルが受け取るものを確認してください (print_r($_POST) が役立つ場合があります)。

値を取得している場合は、SQL クエリの作成方法を確認してください。

さらにコードを投稿すると、問題がどこにあるのかをよりよく知ることができます。

于 2012-10-16T16:18:36.100 に答える