繁体   English   中英

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

[英]How can I get data from a MySQL database with Code Igniter?

这是我第一次尝试Web编程,而我目前正在尝试使用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?

由于您正在使用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!
}

尝试这个:

$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";
}

在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
    }

等等。 您可以在PHP.net上阅读有关使用PHP的更多信息。

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

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

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

row()返回该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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM