【问题标题】:Query is always returning 1查询总是返回 1
【发布时间】:2017-05-24 06:23:05
【问题描述】:

查询总是返回 1 而不是我需要的 id。我想要有自己的“cita”的“intervaloshorarios”表的id。例如,(上午 8:00 到上午 9:00)表示日期:27/08/1988。我需要(上午 8:00 到 9:00)身份证。我正在使用 print_r($expression) 返回查询。如何获得我需要的id

数据库

Database

模型函数

public function get_idintervalo($idCitas) {

     $query = $this->db->query('SELECT intervaloshorarios.idIntervaloHorario FROM intervaloshorarios INNER JOIN citas '
             . 'ON intervaloshorarios.idIntervaloHorario = citas.idIntervaloHorario '
             . 'WHERE citas.idCitas = ' . $idCitas . ';');


        return print_r($query);
    }

控制器(试图将 id 放入隐藏字段)

 $query = $this->Intervalos_Model->get_idintervalo($idCitas);

  $crud->change_field_type('idIntervaloHorario', 'hidden', $query);

错误(Sihas 回答)

Print_r($query)(Sihas 回答 )

1CI_DB_mysqli_result 对象 ( [conn_id] => mysqli 对象 ( [affected_rows] => 1 [client_info] => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $ [client_version] => 50011 [connect_errno] => 0 [connect_error] => [errno] => 0 [error] => [error_list] => Array () [field_count] => 1 [host_info] => localhost via TCP/IP [info] => [insert_id] = > 0 [server_info] => 5.5.5-10.1.21-MariaDB [server_version] => 50505 [stat] => 正常运行时间:1043645 线程:1 问题:58810 慢查询:0 打开:257 刷新表:1 打开表:每秒平均 203 次查询:0.056 [sqlstate] => 00000 [protocol_version] => 10 [thread_id] => 3645 [warning_count] => 0) [result_id] => mysqli_result Object ([current_field] => 0 [field_count] = > 1 [长度] => [num_rows] => 1 [type] => 0 ) [result_array] => Array () [result_object] => Array () [custom_result_object] => Array () [current_row] => 0 [行数] => [行数据] => )

【问题讨论】:

  • 如果你想从表中获取记录,那么你必须这样写:$query = $this->db->query("Your select query")->row_array(); 用于一条记录或$query = $this->db->query("Your select query")->result_array(); 用于多条记录。
  • 谢谢@Nidhi,但我也试过了,但它不起作用......
  • 在return语句之前写echo $this->db->last_query()并在mysql中执行该查询并检查结果是否返回。
  • 我已经用另一个问题解决了这个问题。无论如何,谢谢,我会在下面回答。

标签: php mysql sql codeigniter grocery-crud


【解决方案1】:

最好查找这些功能的一些手册页

print_r 输出变量(它回显它)并返回 TRUE,因此以这种方式返回将始终返回 true(例如,如果您打印该结果,则可以将其解释为“1”)。因此,通过实际返回结果来返回结果,而不是将其回显到输出!

那么你应该看看你的query。你不是说你用什么,而是假设你用 PDO,看看manual of pdo's query

返回值
PDO::query() 返回一个 PDOStatement 对象,失败时返回 FALSE。

你不会得到你的结果,你会得到一个PDOStatement。如果您愿意,可以迭代此语句,但它本身不是字符串。例如,您可以这样做:

$stmt = $pdo->query('SELECT name FROM users');
while ($row = $stmt->fetch())
{
    echo $row['name'] . "\n";
}

我取自以下页面:phpdelusions,请看一下(不附属,只是一个随机的谷歌点击:))

编辑:您似乎在使用mysqli。同样的事情也适用:查看手册!

这 2 个链接应该可以帮助您入门 http://php.net/manual/en/mysqli.query.phphttp://php.net/manual/en/mysqli.examples-basic.php.

例如,您可以这样做:

 $result = $this->db->query($q);
 $array = $result->fetch_assoc();
 //now $array is an array with your results. var_dump it to inspect

【讨论】:

  • 谢谢!我是 php 和 mysql 的新手,你帮了很多忙!我修改了函数,它抛出错误:消息:调用未定义的方法 CI_DB_mysqli_result::fetch()。 public function get_idintervalo($idCitas) { $query = $this->db->query('SELECT ... INNER JOIN citas ....' . 'WHERE ...); while ($row = $query->fetch()) { echo $row['intervaloshorarios.idIntervaloHorario'] . "\n"; } }
  • 这将变成一个大问题 - 答案 - 问题 - 答案线程,这对于本网站来说是一种糟糕的格式。你应该训练自己使用手册找出东西(没有冒犯的意思,但它真的很有帮助)。在这种情况下,问题是您没有使用PDO,但您似乎使用的是mysqli。我会为你添加一个简单的例子。
  • 谢谢!我会试试的!
【解决方案2】:

试试这个代码:

public function get_idintervalo($idCitas)
{
    $this->db->select('intervaloshorarios.idIntervaloHorario');
    $this->db->from('intervaloshorarios');
    $this->db->join('citas','intervaloshorarios.idIntervaloHorario = citas.idIntervaloHorario');
    $this->db->where('citas.idCitas',$idCitas);
    $query = $this->db->get();
    $result =  $query->row('intervaloshorarios.idIntervaloHorario');

    echo $result; exit();
}

【讨论】:

  • 感谢您的代码!它抛出添加错误,所以我不能添加任何东西。我不明白为什么...
  • 好的,我将在上面添加错误消息。它是西班牙语,但它正在抛出:'Localhost 说:添加时发生错误'
  • 你在隐藏字段idIntervaloHorario中得到任何值吗?
  • 我已经完成了 print_r($query) 以查看发生了什么,我认为它又开始了 1。我将添加上面的打印。
  • 请不要打印$query。检查更新的答案以查看查询中的值。
【解决方案3】:

您只需创建表的别名并使用 Mysql In 获取多个 Id 并传递 Id 数组

public function get_idintervalo($idCitas = array) 
{
    $query = SELECT in.idIntervaloHorario FROM intervaloshorarios in INNER JOIN citas ct ON in.idIntervaloHorario = ct.idIntervaloHorario WHERE citas.idCitas IN ( $idCitas );

$result = $this->db->query($query);
}

【讨论】:

  • 我现在已经完成了这个查询,它正在返回数组到字符串的转换:get_idintervalo($idCitas = array())$query = "SELECT intervaloshorarios.idIntervaloHorario FROM intervaloshorarios INNER JOIN citas " . "ON intervaloshorarios.idIntervaloHorario = citas.idIntervaloHorario " . "WHERE citas.idCitas IN (' " . $idCitas . " ') "; $result = $this->db->query($query); return $result->result();
猜你喜欢
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
  • 2021-01-15
  • 2018-09-18
  • 2019-11-26
  • 1970-01-01
相关资源
最近更新 更多