如何使用Code Igniter从MySQL数据库获取数据?
这是我第一次尝试网络编程,我目前正在尝试使用Code Igniter。我得到这个从教程,但我的问题似乎有点不同,我试了好东西,但没有工作如何使用Code Igniter从MySQL数据库获取数据?
所以我想从我的数据库获取数据,这里是我的代码
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?
由于您使用笨,只是忠实于它,使用它的内置功能:
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!
}
是啊,我看到的教程也表示使用“$ this-> db-> select”,但是我的查询要复杂得多,我只是在这里简单说明,这就是为什么我尝试了不同的方式。 – Darjeeling 2014-10-08 03:41:23
@ student080705639好吧,你可以使用第一个答案,如果你想在你的查询更自由,只记得逃避这些输入,不要直接注入他们 – Ghost 2014-10-08 03:53:59
@ student080705639第二个答案只是一个建议 – Ghost 2014-10-08 03:54:57
试试这个:
$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
}
依此类推。您可以阅读更多关于using PHP at PHP.net
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
'mysqli_fetch_row($查询)' – 2014-10-08 03:25:59
@弗雷德-II- “预计参数1被mysqli_result,对象给予” – Darjeeling 2014-10-08 03:27:35
你确定你使用的整个'mysqli_'? – 2014-10-08 03:31:42