web-dev-qa-db-ja.com

Notice:配列から文字列への変換

データベースから値を選択し、SELECTを使用してユーザーに表示しようとしています。しかし、私はこのエラーを取得し続けます:

_Notice: Array to string conversion in (pathname) on line 36.
_

@mysql_fetch_assoc();がこれを修正すると思っていましたが、それでも通知を受け取ります。これは私がエラーを取得しているコードの一部です:

_  {
  $loggedin = 1;

  $get = @mysql_query("SELECT money FROM players WHERE username = 
 '$_SESSION[username]'");
  $money = @mysql_fetch_assoc($get);

  echo '<p id= "status">'.$_SESSION['username'].'<br>
  Money: '.$money.'.
  </p>';
  }
_

何が間違っていますか?私はPHPが初めてです。

26
Sunden

問題は、$ moneyが配列であり、文字列または文字列に簡単に変換できる変数のように扱うことです。次のように言う必要があります。

 '.... Money:'.$money['money']
18
Razvan

さらに簡単:

$get = @mysql_query("SELECT money FROM players WHERE username = '" . $_SESSION['username'] . "'");

$ _ SESSIONリファレンスのusernameを囲む引用符に注意してください。

1
user1046243

$ _SESSION ['username']の値を$ usernameなどの変数に保存します

$username=$_SESSION['username'];

$get = @mysql_query("SELECT money FROM players WHERE username = 
 '$username'");

動作するはずです!

0
user5336032

mysql_fetch_assocは配列を返すので、配列をエコーすることはできません。print_r()が必要です。そうでなければ、特定の文字列$ money ['money']が必要です。

0
Learner

この通知を受け取る理由の1つ:配列から文字列への変換…は、配列のグループを結合していることです。例、いくつかの名と姓を整理します。

配列の要素を適切にエコーするには、関数implode(separator, array)を使用できます。例:

implode(' ', $var)

結果:

first name[1], last name[1]
first name[2], last name[2]

W3C のその他の例。

0

配列をエコーすることはできません。代わりにprint_rを使用する必要があります。

<?php
$result = $conn->query("Select * from tbl");
$row = $result->fetch_assoc();
print_r ($row);
?>
0
user9008566