dongzhang6677 2012-07-18 12:24
浏览 40

MySql请求中出现1064错误[关闭]

I have the following PHP code:

function get_all_labels_by_language_id($language_code, $page_index, $user_id) {
    $language_id = $this->get_language_id($language_code);
    $users_query = "select  eng.label_value, loc.votes, loc.user_id, loc.approved, eng.language_value,       
            coalesce(loc.language_value)
            from    labels eng
            left outer join    
                labels loc
            on      loc.language = " . $language_id . "
            and eng.label_value = loc.label_value
            and loc.user_id = '" . $user_id . "'
            where   eng.language = 45
            order by loc.language_value";
    $data = $this->db->query($users_query)->result_array();
    $result = array();
    for ($i = 0; $i < count($data); $i++) {
        $result[$i]['language_id'] = $language_id;
        if (!$data[$i]['user_id']) {
            $result[$i]['translate'] = $data[$i];
            $result[$i]['alternatives'] = NULL;

            $other_records_query = "select  eng.label_value, loc.votes, loc.user_id, loc.approved, eng.language_value,       
                coalesce(loc.language_value)
                from    labels eng
            left outer join    
                labels loc
            on      loc.language = " . $language_id . "
            and eng.label_value = loc.label_value
            where   eng.language = 45 and loc.label_value='" . $data[$i]['label_value'] . "'
            order by loc.language_value";
            $other_records = $this->db->query($other_records_query)->result_array();
            for ($k = 0; $k < count($other_records); $k++) {
                if ($other_records[$k]['approved'] == '1') {
                    $result[$i]['translate'] = $other_records[$k];
                } else {
                    $result[$i]['alternatives'][] = $other_records[$k];
                }
            }
        } else {
            $result[$i]['translate'] = $data[$i];
            $result[$i]['alternatives'] = NULL;
            if ($data[$i]['approved'] == '1') {
                $other_records_query = "select  eng.label_value, loc.votes, loc.user_id, loc.approved, eng.language_value,       
                coalesce(loc.language_value)
                from    labels eng
            left outer join    
                labels loc
            on      loc.language = " . $language_id . "
                    and eng.label_value = loc.label_value
                    and loc.approved='1'
            where   eng.language = 45 and loc.label_value='" . $data[$i]['label_value'] . "'
            and approved='0' order by loc.language_value";
                $other_records = $this->db->query($other_records_query)->result_array();
                for ($k = 0; $k < count($other_records); $k++) {
                    $result[$i]['alternatives'][] = $other_records[$k];
                }
            } else {
                $other_records_query = "select  eng.label_value, loc.votes, loc.user_id, loc.approved, eng.language_value,       
                coalesce(loc.language_value)
                from    labels eng
            left outer join    
                labels loc
            on      loc.language = " . $language_id . "
                    and eng.label_value = loc.label_value
                    and loc.approved='1'
            where   eng.language = 45 and loc.label_value='" . $data[$i]['label_value'] . "'
            order by loc.language_value";
                $other_records = $this->db->query($other_records_query)->result_array();
                for ($k = 0; $k < count($other_records); $k++) {
                    $result[$i]['alternatives'][] = $other_records[$k];
                }
            }
        }
    }

This code works right, but now I've got the following error:

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 't set up correctly. If you're the store owner, please refer to' ' at line 8

select eng.label_value, loc.votes, loc.user_id, loc.approved, eng.language_value, coalesce(loc.language_value) from labels eng left outer join labels loc on loc.language = 24 and eng.label_value = loc.label_value where eng.language = 45 and loc.label_value='It looks like the payment gateway isn't set up correctly. If you're the store owner, please refer to' order by loc.language_value

Filename: Z:\home\localhost\www\system\database\DB_driver.php

Line Number: 330

Please, tell me, how can I fix it? I don't understand where I'm wrong. Thank you in advance.

  • 写回答

3条回答 默认 最新

  • douyan1613 2012-07-18 12:26
    关注

    you should to escape ' in your string literals

    'It looks like the payment gateway isn\'t set up correctly. If you\'re the store owner, please refer to' 
    

    mysql_real_escape_string is your friend.

    评论

报告相同问题?

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)