MYSQL语法错误 - 用于计算成本的Codeigniter函数

时间:2012-01-12 17:39:13

标签: php mysql database forms codeigniter

function stationcost($station1,$station2)
{

    $data = array();


    $this->db->select('Zone')->from('station_zone')->where('Station', $station1);
    $Q = $this->db->get();

    $this->db->select('cost')->from('zone_cost')->where('zone', $Q);
    $query = $this->db->get();

    if ($query->num_rows() > 0)
    {
    foreach ($query->result() as $row)
    {
    $data = $row->Cost;
    return $data;
    }
} 
}

如果我将$ Q更改为整数,则该函数可以正常工作。我还要添加另一个电台来减去差值以计算区域差异

将名称转换为区域 $ station2 - $ station1 ='calculatedfigure'

然后从zone_cost中选择成本,其中zone ='calculcated figure';

我的错误讯息:

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 3

SELECT `cost` FROM (`zone_cost`) WHERE `zone` =

Filename: models/station_model.php

Line Number: 59

我试过这个

$this->db->select('Zone')->from('station_zone')->where('Station', $station2);
    $S2 = $this->db->get();

     $this->db->select('Zone')->from('station_zone')->where('Station', $station1);
    $S1 = $this->db->get();

    $Q = $S2 - $S1;

2 个答案:

答案 0 :(得分:2)

问题是变量$Q不包含有效值,可能是因为$station1中传递的值在数据库中不存在。我原以为CI会通过至少使用空引号字符串来解决这个问题,但显然不是。

在将$Q传递给where()之前,您需要验证num_rows()是否包含合理的值。例如,另一个$Q检查会告诉您第一个查询是否找到了任何内容。

此外,您需要传递来自$Q->row()->Zone的字段数据,而不仅仅是对象。所以在你的情况下,{{1}}。

答案 1 :(得分:0)

$Q是一个包含一些字段的对象,在这种情况下只有一个字段:Zone。请检查CodeIgniter Query results