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