如何使用Code Igniter从MySQL数据库中获取数据?

时间:2014-10-08 03:25:17

标签: php mysql codeigniter

这是我第一次尝试网络编程,而我目前正在尝试使用Code Igniter。我从教程中得到了这个,但我的问题似乎有点不同,我尝试了几件但没有工作

所以我想从我的数据库中获取数据,这是我的代码

public function can_log_in($username, $password){

    $query = $this->db->query("SELECT col1, col2 FROM table1 where id_login = '$username' and id_password = '$password'");

    $data = mysql_fetch_row($query); //got error this line, and several line also on libraries and helper
    if ($query->num_rows() == 1){
        return  (string) $data[0];
    }else {
        return "0";
    }
}

错误说:

  

提供的参数不是有效的MySQL结果资源

在我使用的控制器上:

if($this->model_get->can_log_in($username, $password) != "0")

老实说,我不知道这项工作是否应该使用<>?没有机会尝试它,但这是另一个问题。

那么如何在这里获得col1和col2?

4 个答案:

答案 0 :(得分:1)

由于您使用的是codeigniter,只要忠实于它,请使用其内置函数:

public function can_log_in($username, $password)
{
    $username = $this->db->escape($username); // this automatically adds single quotes
    $password = $this->db->escape($password);
    $query = $this->db->query("SELECT col1, col2 FROM table1 where id_login = $username and id_password = $password");
    if($quer->num_rows() > 0) {
        $data = $query->row(); // fetches single row
        return $data->col1;
    }
}

我还建议使用codeigniters活动记录,这样您就不必担心转义了。他们已经为你准备好了:

public function can_log_in($username, $password)
{
    $this->db->select('col1', 'col2');
    $this->db->where('username', $username);
    $this->db->where('password', $password);
    $query = $this->db->get('table1');

    return ($query->num_rows() > 0);
}

在控制器中:

$username = $this->input->post('username');
$password = $this->input->post('password');
$can_log = $this->model_name->can_log_in($username, $password);
if($can_log) {
    // yahoo! can log!
} else {
    // sorry but you cannot!
}

答案 1 :(得分:0)

试试这个:

$query = $this->db->query("SELECT col1, col2 FROM table1 where id_login = '$username' and id_password = '$password'");

$data = $query->row_array();

if ($query->num_rows() == 1){
    return  (string) $data['col1']; // Need to give the field name
}else {
    return "0";
}

答案 2 :(得分:0)

在PHP中,您需要使用

连接到数据库

$link = mysqli_connect("myhost","myusername","mypassword","mybd") or die("Error " . mysqli_error($link));

连接到数据库后,您可以使用

查询该数据库
$data = mysqli_query($con,"SELECT * FROM tablename");

看看你写的是什么,看起来你的代码遇到了错误,因为你没有连接到数据库来查询。建立连接后,您可以提交查询并使用循环解析它们以枚举

的每一行结果
for($i = 0;$i<mysqli_num_rows($data);$i++) {
    $row = mysqli_fetch_row($data));
    $username = row[0]; //usernames are column 1
    $password = row[1]; //passwords are column 2
    }

等等。您可以在using PHP at PHP.net

上阅读更多信息

答案 3 :(得分:0)

CodeIgniter提供了几种对查询结果执行的方法。

见这里:https://ellislab.com/codeigniter/user-guide/database/results.html

result()返回一个PHP对象数组。

row()返回该行的单个PHP对象。

result_array()返回一个数组数组。

row_array()返回该行的单个数组。

row()row_array()可选择使用一个参数,该参数是您想要返回的行号。

$rows = $query->result(); //array of objects
$rows_array = $query->result_array(); //array of arrays
$row = $query->row(); //single object
$row_array = $query->row_array(); //single array