php - 使用 codeigniter 将变量传递给 SELECT 子句

标签 php mysql sql codeigniter

这是我的模型,它在我只查询一个表时有效:

function cari_username()
    {
        $username = $this->input->post('username');
        $this->db->like('username',$username);
        $data = $this->db->get('user');
        return $data;
    }

我需要的是连接多个表中的数据,但现在我的代码失败了:

function cari_username()
    {
        $this->db->from('user');
        $username = $this->input->post('username');
        $data = $this->db->query("SELECT * FROM (SELECT user.id_user,mahasiswa.nama,user.password,user.username 
           FROM (`mahasiswa`) 
           LEFT JOIN `pendaftaran_anggota` ON `pendaftaran_anggota`.`nim` = `mahasiswa`.`nim`
           LEFT JOIN `anggota` ON `pendaftaran_anggota`.`id_anggota` = `anggota`.`id_anggota` 
           LEFT JOIN `user` ON `user`.`id_user` = `anggota`.`id_user` UNION 
           SELECT pelatih.id_user, pelatih.nama,user.password,user.username FROM (`pelatih`)
           LEFT JOIN `user` ON `user`.`id_user` = `pelatih`.`id_user` UNION 
           SELECT admin.id_user, admin.nama, user.password,user.username FROM (`admin`)
           LEFT JOIN `user` ON `user`.`id_user` = `admin`.`id_user`) userdata WHERE `username` LIKE username
            ORDER BY `userdata`.`id_user`
             ");

        return $data;
    }

请告诉我如何更改查询以解决此问题。

谢谢。

最佳答案

您的脚本中有 2 个错误:

首先:

WHERE username LIKE username 将不起作用,因为像任何 php 变量一样的用户名应该是 $username

第二个:

mysql不知道$username是哪种变量,但我们知道它是一个字符串。因此,您需要将其放在单引号内:

WHERE `username` LIKE '$username'

关于php - 使用 codeigniter 将变量传递给 SELECT 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23723480/

相关文章:

mysql - 如何按 3 列区分行并获得排序行

php - 更新 WHERE 不起作用?

php - PHP switch语句中跳转到另一个case

mysql - Symfony2 查询在两个表上使用左连接

mysql - 一个字与表字段的率差

sql - 通过 T-SQL 根据传递性查找所有可能的对

sql - 如何替换 Teradata select 语句中的多个字符串

php - PDO登录页面,当用户连接时选择指定行并对其执行某些操作

php - 如何从 PHP CLI 脚本获取主目录?

MySQL 缩短查询 - SELECT 有多个 OR 选择