0

OK、クエリを実行していますが、CodeIgniter から次のエラーが表示されます。

エラー番号: 1064

SQL 構文にエラーがあります。4行目のnear ''を使用する正しい構文については、MySQLサーバーのバージョンに対応するマニュアルを確認してください

SELECT username FROM friend_request JOIN user ON user_id = 友人 WHERE (友人 = '8' AND 送信者 =

$this->session->userdata('user_id') echos to be 4 (これは私の user_id です)...では、なぜそれが何も表示されないのでしょうか?

$this->db->query('SELECT username
    FROM friend_request
    JOIN user ON user_id = friend
    WHERE (friend = ? AND sender = ?)
    OR (friend = ? AND sender = ?)', 
        $user->row()->user_id, 
        $this->session->userdata('user_id'), 
        $this->session->userdata('user_id'), 
        $user->row()->user_id);

if($this->db->num_rows() > 0) {
    $this->errors->set_error('You either have a pending request from '.ucfirst($this->db->row()->username).' 
        or you have already requested their friendship!');
    return false;
}

エンターが何かを壊すかどうかわからなかったので、すべてを1行にまとめてみましたが、それでも何も修正されませんでした。

4

1 に答える 1

3

num_rowsデータベースではなくクエリ結果に対してを使用する必要があるため、エラーが発生します。また、バインディングのクエリが間違っています。

$query = $this->db->query(
  'SELECT username
  FROM friend_request
  JOIN user ON user_id = friend
  WHERE (friend = ? AND sender = ?)
  OR (friend = ? AND sender = ?)', 
  array(
    $user->row()->user_id, 
    $this->session->userdata('user_id'), 
    $this->session->userdata('user_id'), 
    $user->row()->user_id
  )
);

if ($query->num_rows() > 0) {
    $this->errors->set_error('You either have a pending request from '.ucfirst($this->db->row()->username).' 
        or you have already requested their friendship!');
    return false;
}
于 2013-01-28T17:40:56.503 に答える