php - 创建自定义 WHERE 子句以过滤数据表

标签 php javascript jquery mysql datatables

我正在使用数据表,并且正在尝试创建自定义 WHERE 子句。我有以下代码:

$sWhere = "WHERE office=".$varOffice;
if ( isset($_GET['sSearch']) && $_GET['sSearch'] != "" )
{
    $sWhere = "WHERE (";
    for ( $i=0 ; $i<count($aColumns) ; $i++ )
    {
        if ( isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == "true" )
        {
            $sWhere .= "`".$aColumns[$i]."` LIKE '%".mysql_real_escape_string( $_GET['sSearch'] )."%' OR ";
        }
    }
    $sWhere = substr_replace( $sWhere, "", -3 );
    $sWhere .= ') AND office='.$varOffice;
}

经过调试,我发现MySQL抛出错误。错误 1605。

我决定回显此处找到的$sQuery:

$sQuery = "
        SELECT SQL_CALC_FOUND_ROWS `".str_replace(" , ", " ", implode("`, `", $aColumns))."`
        FROM   $sTable
        $sWhere
        $sOrder
        $sLimit
        ";

然后我发现错误是因为 WHERE 子句没有引号,如下所示:

SELECT SQL_CALC_FOUND_ROWS `amount_due_owed`, `amount_paid`, `amount_remaining`, `reference_number` FROM accounting WHERE office=Office 1 

应该是:

WHERE office='Office 1'

我一直在尝试,但一直没能弄清楚。我该如何获得变量周围的单引号?

最佳答案

在第一行添加单引号:

$sWhere = "WHERE office='".$varOffice."'";

另外:如果您只是在 SQL 查询中插入随机 $_GET 变量,您最终会得到 bad time 。请使用PDO或者更安全一些的东西(甚至 mysql_real_escape_string() 也不是那么安全。)。

关于php - 创建自定义 WHERE 子句以过滤数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14267561/

相关文章:

php - zf2,表单集合未在 zf2 中创建正确的输入名称

javascript - 两个 ajax 请求位于一个不存在的附加 div 中

javascript - jQuery::Scrollable Div 不起作用

javascript - jQuery:在更改时获取与其文本最接近的元素?

php - Laravel 数据透视表 - 从反向关系表访问

php - 我的 PDO 插入没有错误......但它没有插入我的数据库

javascript - 我怎样才能取消确认 sweetalert

javascript - 在指令中使用异步进行 Angular Select

javascript - Fabricjs - 如何检测鼠标移动时的 Canvas ?

javascript - 动态生成的下拉选项的 knockout 绑定(bind)