我是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>";
}
}
?>
答案 0 :(得分:0)
回答你的问题:
mysqli_fetch_assoc
代替mysqli_fetch_array
。建议使用语法以避免在查询结果中获取额外数据。在重量级查询的情况下提高效率。此外,它避免了早期学习者的混淆。在列名称上使用后退标记而不是单引号。
SELECT`hash`,`user_one`,`user_two` FROM message_group WHERE user_one =&#39; $ my_id&#39;或者user_two =&#39; $ my_id&#39;
在mysqli_fetch_assoc
使用单引号时提取数据,就像您已经在做的那样$run_con['hash']
使用`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
,因为它会带回额外的数据,这是索引数组中相同的数据以及相关的数组格式(通常不需要。)