CR2208 2019-11-05 17:06 采纳率: 100%
浏览 424
已采纳

PHP+MYSQL 搜索条件使用变量时双引号的运用

数据库表 : fcoa_cost有以下两个字段

cost_number char(10)

cost_groupid mediumint(3)

$_SESSION['html_where'] = "WHERE cost_groupid = 2";
$_html_where = $_SESSION['html_where'];
//分页模块
global $_pagenum,$_pagesize;
_page("SELECT DISTINCT cost_number FROM fcoa_cost $_html_where",4);

运行后,一直提示以下错误:
WHERE cost_groupid = 2SQL执行失败!Unknown column 'cost_groupid' in 'where clause'

这个是什么原因呢?要如何修改这个SQL语句呢?谢谢!

以下是分页模块的代码:

/**
 * _page() 计算分页数
 * @access public
 * @param string $_sql
 * @param int $_pagesize
 * @return void
 */
function _page($_sql,$_size){
    global $_pagenum, $_pagesize, $_page, $_pageabsolute, $_num;
    if (isset($_GET['page'])){
        $_page= $_GET['page'];
        if (empty($_page) || $_page <0 || !is_numeric($_page)){
            $_page=1;
        } else {
            $_page = intval($_page);
        }
    } else {
        $_page=1;
    }
    $_pagesize = $_size;
    $_num = _num_rows(_query($_sql));
    if ($_num == 0 ) {
        $_pageabsolute = 1;
    } else {
        $_pageabsolute = ceil($_num / $_pagesize);
    };
    if ($_page > $_pageabsolute) {
        $_page = $_pageabsolute;
    }
    $_pagenum = ($_page - 1) * $_pagesize;
}

  • 写回答

3条回答 默认 最新

  • Hardy-Chen 2019-11-05 18:30
    关注

    我一般都是单引号操作,然后如果有需要拼接的话,则直接用英文符号 ' . '来拼接一条sql语句
    比如:
    $fieldVal = *;
    $where = 'where field = ' . $fieldVal;
    $sql = 'select * from table' . $where......;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码