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

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条)

报告相同问题?

悬赏问题

  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失
  • ¥15 springboot+vue 集成keycloak sso到阿里云
  • ¥15 win7系统进入桌面过一秒后突然黑屏
  • ¥30 backtrader对于期货交易的现金和资产计算的问题
  • ¥15 求C# .net4.8小报表工具
  • ¥15 安装虚拟机时出现问题
  • ¥15 Selenium+docker Chrome不能运行
  • ¥15 mac电脑,安装charles后无法正常抓包
  • ¥18 visio打开文件一直显示文件未找到