[英]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
}
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.