【问题标题】:Notice: Array to string conversion in注意:数组到字符串的转换
【发布时间】:2023-03-06 07:00:01
【问题描述】:

我正在尝试从数据库中选择一个值并使用 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 很陌生。

【问题讨论】:

  • 正如 Razvan 指出的那样,您正在尝试回显一个数组。它不是那样工作的。尝试运行 print_r($money); 以查看您的数组包含的内容。
  • 您正在将一个结果集从数据库中检索到$money。你怎么能直接回显它是一个数组。为什么不使用循环来遍历数组并在循环中回显所需的字段?
  • 当我使用 print_r 时,它会打印资源 ID #4 而不是数字。
  • @Sunden:) 把它放到一个类似这样的循环中 while($money = @mysql_fetch_assoc($get)){echo $money['money'];}
  • @Lion 这很好用,谢谢。

标签: php mysql sql-server arrays select


【解决方案1】:

您会收到此通知的原因之一:数组到字符串的转换...是您正在组合一组数组。例如,整理出几个名字和姓氏。

要正确回显数组的元素,您可以使用函数implode(separator, array) 示例:

implode(' ', $var)

结果:

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

来自W3C的更多示例。

【讨论】:

    【解决方案2】:

    您不能回显数组。 必须改用 print_r。

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

    【讨论】:

      【解决方案3】:

      mysql_fetch_assoc 返回一个数组,所以你不能回显一个数组,需要 print_r() 否则特殊字符串 $money['money']。

      【讨论】:

        【解决方案4】:

        更简单:

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

        注意 $_SESSION 参考中 username 周围的引号。

        【讨论】:

        • 我终于明白我在哪里做了一个类型,关于如何使用数组的好建议;)
        【解决方案5】:

        将 $_SESSION['username'] 的值存储到 $username 等变量中

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

        应该可以了!

        【讨论】:

          【解决方案6】:

          问题在于 $money 是一个数组,您将其视为字符串或可以轻松转换为字符串的变量。你应该这样说:

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

          【讨论】:

          • 那个去掉了通知但是回显中没有显示货币价值,它只是空白。
          • 为了记录,在 cmets 下面的问题 OP 告诉我们它是一个资源。然后解决方案是迭代资源。在这个接受的答案中对资源的密钥访问可能不起作用。所以这个答案“$money 是一个数组”是错误的 :-)
          猜你喜欢
          • 2017-08-11
          • 2013-04-18
          • 1970-01-01
          • 2013-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-29
          相关资源
          最近更新 更多