Php 私有消息系统-mysql中的mysqli

Php 私有消息系统-mysql中的mysqli,php,Php,我是php新手,我关注了以下youtube: 以构建conversations.php脚本。我从mysql到mysqli做了一些调整。我没有得到与视频10:06分钟相同的结果。它不会显示对话列表。我找不到我的错误在哪里 <?php if(isset($_GET['hash']) && !empty($_GET['hash'])){ echo "Show messages!"; } else {

我是php新手,我关注了以下youtube: 以构建conversations.php脚本。我从mysql到mysqli做了一些调整。我没有得到与视频10:06分钟相同的结果。它不会显示对话列表。我找不到我的错误在哪里

   <?php
        if(isset($_GET['hash']) && !empty($_GET['hash'])){
          echo "Show messages!";  
        }  
        else {
            echo "<b>Select Conversation:</b>";
            $sql_k = "select 'hash', 'user_one','user_two' from message_group 
            where user_one='$my_id' OR user_two='$my_id'";
            $get_con = mysqli_query($db,$sql_k);
            while ($run_con = mysqli_fetch_array($get_con)){
                 $hash = $run_con['hash'];
                 $user_one = $run_con['user_one'];
                 $user_two = $run_con['user_two'];
                 if ($user_one==$my_id) 
                 {
                     $select_id = $user_two;
                 } else {
                     $select_id = $user_one;
                 } 
                      $sqli = "Select 'username' from users where 
                      id='$select_id'";
                      $user_get = mysqli_query($db,$sqli);
                      $run_user = mysqli_fetch_array($user_get);
                      echo $run_user;
                      $select_username = $run_user['username'];
                      echo "<p><a href ='conversations.php?hash=$hash'>$select_username</a></p>";
                 }
            }   
        ?>    

要回答您的问题:

  • 使用
    mysqli\u fetch\u assoc
    而不是
    mysqli\u fetch\u数组
    。建议使用语法以避免在查询结果中获取额外数据。提高了繁重查询时的效率。此外,它避免了早期学习者的困惑
  • 在列名上使用反勾号,而不是单引号

    从消息组中选择'hash','user\u one','user\u two',其中user\u one='$my\u id'或user\u two='$my\u id'

  • mysqli\u fetch\u assoc
    的情况下获取数据时,像您已经在做的那样使用单引号,即
    $run\u con['hash']


  • 使用'mysql\u fetch.*

    使用mysqli\u fetch\u行,可以在索引数组中获得数据

    $hash = $run_con[0];
    $user_one = $run_con[1];
    $user_two = $run_con[2];
    
    使用mysqli\u fetch\u assoc,相关数组中的数据可用

    $hash = $run_con['hash'];
    $user_one = $run_con['user_one'];
    $user_two = $run_con['user_two'];
    
    通过使用mysqli_fetch_数组,可以在索引数组和关联数组中获得数据。以下代码行将导致相同的值存储在
    $hash

    $hash = $run_con[0];
    $hash = $run_con['hash'];
    
    使用
    mysqli\u fetch\u对象
    ,数据可以作为对象使用

    $hash = $run_con->hash;
    $user_one = $run_con->user_one;
    $user_two = $run_con->user_two;
    

    旁注:
    mysqli\u fetch\u arary
    不推荐使用,因为它会带回额外的数据,这是索引数组中的相同数据以及关联数组格式(通常不需要)。使用
    mysqli\u fetch\u object
    而不是
    mysqli\u fetch\u array
    @HamzaRashid他正在以数组的形式访问结果。他为什么要把它作为一个对象来取呢?我在哪里把我的表名加起来了?消息组还是用户?我添加了解释和示例以便于理解。
    $sql\u k=“选择‘散列’、‘user_one’、‘user_two’
    ——您仍然在犯与您在另一个问题中犯的相同的错误,您很快忽略了这些错误,并且没有回复该评论或我针对过去问题发布的任何其他评论。”。如果你想让你的代码运行;简单;检查错误,您有很多错误。顺便提一下我最终删除了关于
    'hash'
    列的评论;我有我的理由。也许你对我有什么不满;我不知道。如果你想将结果作为关联数组,你应该使用mysqli_fetch_assoc,而不是mysqli_fetch_object。另外,这可能不是问题所在,因为默认情况下,mysqli_fetch_数组将返回索引结果和以列名为键的结果,因此索引结果和关联结果都是如此。因此,更改为mysqli_fetch_assoc不会改变任何内容,除了没有索引(0,1…)数据的较小数组。您应该尝试var_dump($run_user);看看你从这个查询中得到了什么结果。它会返回预期的结果吗?嗯,你说得对。我已将数组更改为object,对话列表仍不显示在页面中。