嗨,我使用下面的jquery发送post请求到我的PHP控制器编码,但当我从控制器传递值到模型作为参数时,我看到的是查询的结果是空的,有传递的值,但查询直接在mysql中工作。
所以问题是在获得控制器中的值后,当我把它传递给我的模型作为参数,并在查询中传递该值,没有结果出现,但应该出现。
在文档加载时调用的javascript函数:
function stockUpdate(symbol)
{
$.post("stock/stock_update",
{
symbol: symbol
},
function success(data)
{
alert(data);
}
});
}
My PHP controller:
class Stock extends CI_Controller {
function stock_update()
{
// get symbol
$symbol = $this->input->post('symbol');
// get the price for symbol and calculate unit price
$result = $this->user_stock_model->get_price($symbol);
print_r($result); // nothing gets printed
}
}
我user_stock_model :
class User_stock_model extends CI_Model {
public function get_price($symbol)
{
// get user id
$id = $this->session->userdata('id');
echo $symbol; // value gets printed
// fetch total price where symbol as given
$sql = "SELECT shares, price FROM users_stock ".
"WHERE id = ? and symbol = ?";
$query = $this->db->query($sql, array($id, $symbol));
return $query->row_array(); // empty results
}
}
由于符号变量在此函数中不包含值,因此我的查询结果为空。
还有一件事我想告诉你,如果我从Chrome开发人员工具控制台运行完全相同的jquery脚本,它的工作绝对很好。
看起来在发送请求之前没有设置变量'symbol'(即:(在document.ready)。您是否尝试在$.post之前记录"symbol"?
实际上,jquery post请求发送给我的控制器的值是预先加上空格的。虽然直接打印值似乎很好,但查询没有返回结果。
例如:我看到的是:'A'
实际上是:' A '
因此,当我在codeigniter的查询函数中放入echo语句时,形成的查询是:
SELECT shares, price FROM users_stock WHERE id = '11' and symbol = ' A '
因为在我的mysql表中没有记录,符号列= ' A ',因此没有返回任何东西,我认为值在那里不可见。我的坏。
简单的PHP trim()函数解决如下问题:
// get symbol
$symbol = trim($this->input->post('symbol'));