私信系统 - 来自mysql的mysqli

时间:2017-04-08 19:51:15

标签: php

我是php的新手,我跟着这个youtube: https://www.youtube.com/watch?v=LQ8DpIbD9Ps 为了构建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>";
                 }
            }   
        ?>    

1 个答案:

答案 0 :(得分:0)

回答你的问题:

  1. 使用mysqli_fetch_assoc代替mysqli_fetch_array。建议使用语法以避免在查询结果中获取额外数据。在重量级查询的情况下提高效率。此外,它避免了早期学习者的混淆。
  2. 在列名称上使用后退标记而不是单引号。

    SELECT`hash`,`user_one`,`user_two` FROM message_group WHERE user_one =&#39; $ my_id&#39;或者user_two =&#39; $ my_id&#39;

  3. mysqli_fetch_assoc使用单引号时提取数据,就像您已经在做的那样$run_con['hash']

  4. 使用`mysql_fetch _ *

    使用mysqli_fetch_row,数据在索引数组中可用。

    $hash = $run_con[0];
    $user_one = $run_con[1];
    $user_two = $run_con[2];
    

    使用mysqli_fetch_assoc,数据在相关数组中可用。

    $hash = $run_con['hash'];
    $user_one = $run_con['user_one'];
    $user_two = $run_con['user_two'];
    

    使用mysqli_fetch_array,数据在索引和关联数组中可用。以下代码行将导致$hash中存储相同的值。

    $hash = $run_con[0];
    $hash = $run_con['hash'];
    

    使用mysqli_fetch_object,数据可用作对象。

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

    旁注:不建议使用mysqli_fetch_arary,因为它会带回额外的数据,这是索引数组中相同的数据以及相关的数组格式(通常不需要。)