这是我网站的网址,此网址用于从数据库调用其id = 1的帖子
的http:// * 的.com /视图=项和ID = 1
我尝试使用此代码的模型
<?php
class inner_query extends CI_Model{
// main shakli wow in slider
function get_current_entry(){
$q= $this->db->query("SELECT * FROM hs_categories_cat INNER JOIN hs_news_nw ON id_cat=idcat_nw WHERE active_nw='1' AND id_nw={$id}");
if($q->num_rows() == 1){
foreach($q->result() as $row){
$data[]=$row;//new array to store every results returned from database
}
return $data;//return with array results
}
}
}
,这是我的控制器
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class entry extends CI_Controller {
public function index()
{
$id=$_GET['id'];
//load model of the current entry
$this->load->model('inner_query');
$data['get_current_entry'] = $this->inner_query->get_current_entry();
$this->load->view('inner_page.php', $data);
}
}
一旦检查此页面,我收到此错误消息
A Database Error Occurred
Error Number: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
SELECT * FROM hs_categories_cat INNER JOIN hs_news_nw ON id_cat=idcat_nw WHERE active_nw='1' AND id_nw=
Filename: E:***\system\database\DB_driver.php
Line Number: 330
答案 0 :(得分:2)
您没有将$id
传递给get_current_entry()
函数。
在您的控制器中,将$id
传递给您的模型,如下所示:
$data['get_current_entry'] = $this->inner_query->get_current_entry($id);
修改模型的get_current_entry()
函数以接受$id
作为参数:
function get_current_entry($id){
// other code here...
}
答案 1 :(得分:2)
您没有在控制器中传递$id
到get_current_entry()
功能。如何获得这个价值?
答案 2 :(得分:1)
您尚未将$ id传递给函数。您可以在index()
方法中定义它,但它不会通过对象属性或方法参数传递给get_current_entry()方法,因此sql查询会在字符串中插入一个空变量,使查询成为:
...WHERE active_nw='1' AND id_nw=
导致错误。
答案 3 :(得分:1)
如果要将uri与查询字符串一起使用,则必须在application / config.php中启用查询字符串以获取更多信息,请参阅:CodeIgniter URLs
你也有选择
$ config ['allow_get_array'] = TRUE; 默认情况下,在最新版本的CI中为TRUE。此选项允许您使用$ _GET []数组。
另一种方式(更好)是使用网址:http://example.com/view/entry/1并通过
获取ID$这 - &GT; URI-&GT;段($ n)的; 其中$ n = 3,例如。
答案 4 :(得分:0)
默认情况下,CI取消设置$ _GET,因此您可以使用$CI->uri->segment_array();
另外,这里有一个很好的例子,说明如何创建一个替换$ _GET的辅助函数: