codeigniter 使用php匹配两列并从mysql中获取不匹配的列值

xkftehaa  于 2023-04-03  发布在  PHP
关注(0)|答案(2)|浏览(112)

我有两个表userfriend_request,我在friend request表中使用user_id插入好友请求,其中有2sender_id(谁发送请求)和receiver_id(谁接收请求)
现在问题从这里开始,我想从userfriend_request表中获取所有记录,我正在使用join。我想从friend_request中获取记录,其中session_id = sender_idsession_id = receiver_id现在我想如果session_id =如果sender_id为真,那么我得到receiver_id,如果session_id = receiver_id为真,那么我想要sender_id
下面是我试过的代码,我知道这是不正确的…请纠正这个mysql查询

$this->db->select('*');
$this->db->from('friend_request');
$this->db->join('users', 'users.u_id = friend_request.sender_id');
$where = '(sender_id=' . $id . ' ' . 'or reciever_id =' . $id . ')';
$this->db->where($where);
$query = $this->db->get();
return $query->result_array();
wfsdck30

wfsdck301#

不幸的是,CodeIgniters本机活动记录类不支持UNION SQL命令,我相信这正是您正在尝试使用的命令。
一个解决方案(尽管在性能方面效率不高)是这样做:

$this->db->select('receiver_ID as friendID')
       ->WHERE('sender_id',$id)
       ->get('friend_request');
$q1 = $this->db->last_query();

$this->db->select('sender_ID as friendID')
       ->WHERE('receiver_id',$id)
       ->get('friend_request');
$q2 = $this->db->last_query();

return $this->db->query($q1 . " UNION " . $q2)->result_array();
zdwk9cvp

zdwk9cvp2#

要使用PHP从MySQL中匹配两个列并获取不匹配的列值,可以使用以下查询:

SELECT column_name FROM table_name WHERE column1_name NOT IN (SELECT column2_name FROM table_name)

这里,table_name是要查询的表的名称,column_name是要检索其值的列的名称,column1_name是要匹配的第一列的名称,column2_name是要匹配的第二列的名称。
要使用PHP执行此查询,可以使用以下代码:

<?php

// connect to the database
$host = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

$conn = mysqli_connect($host, $username, $password, $dbname);

// check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

// execute the query
$sql = "SELECT column_name FROM table_name WHERE column1_name NOT IN (SELECT column2_name FROM table_name)";
$result = mysqli_query($conn, $sql);

// check if query executed successfully
if (!$result) {
    die("Error: " . mysqli_error($conn));
}

// fetch the result
while ($row = mysqli_fetch_assoc($result)) {
    echo $row["column_name"] . "<br>";
}

// close the connection
mysqli_close($conn);

?>

此代码将连接到数据库,执行查询,获取结果,并打印不匹配的列值。您需要将your_username、your_password、your_database、table_name、column_name、column1_name和column2_name替换为数据库和表的相应值。

相关问题