在jquery和php之间切换变量

在jquery和php之间切换变量,php,jquery,mysqli,Php,Jquery,Mysqli,我在黑板上看到过这样的问题,但没有一个与我的情况完全相符,所以在阅读我的问题之前,请不要记下我的分数 我有一张桌子。表的每个th都有一个与mysql数据库中的字段匹配的id。当您单击th时,我希望使用order by desc方向对数据库进行查询。如果您再次单击同一字段,我希望查询具有order by asc方向 问题是在各州之间保持方向的值。到目前为止,当我单击表格标题时,方向没有改变 有人能告诉我我做错了什么吗 HTML: PHP: $db=newmysqli(db\u主机、db\u用户、d

我在黑板上看到过这样的问题,但没有一个与我的情况完全相符,所以在阅读我的问题之前,请不要记下我的分数

我有一张桌子。表的每个th都有一个与mysql数据库中的字段匹配的id。当您单击th时,我希望使用order by desc方向对数据库进行查询。如果您再次单击同一字段,我希望查询具有order by asc方向

问题是在各州之间保持方向的值。到目前为止,当我单击表格标题时,方向没有改变

有人能告诉我我做错了什么吗

HTML:

PHP:

$db=newmysqli(db\u主机、db\u用户、db\u密码、db\u名称);
if(mysqli\u connect\u errno()){
printf(“连接失败:%s”,mysqli_Connect_error());
出口
}
如果(isset($by)和$by==“ASC”){
$by=“DESC”;
}否则{
$by=“ASC”;
}
如果(isset($_POST[“orderby”])){
$orderby=$_POST[“orderby”];
//echo$orderby;
}
//在数据库上构建查询
$q=“从未补偿中选择*”;
如果(isset($_POST[“orderby”])){
$q.=“订购人”。$orderby;
}否则{
$q.=“2013年前订单”;
}
如果(按设定值($){
$q.=$by;
echo$q;
}否则{
$by='DESC';
$q.=$by;
echo$q;
}
//echo$q;
$result=$db->query($q);
回声“;
回显“名称201320122011201020009200820072006200520004*2003200220012000199919981997”;
而($row=$result->fetch_数组(MYSQLI_ASSOC)){
(代码)
}

你很容易受到攻击,而且你似乎没有改变你的点击行为。如果页面是用
sortBy('asc')
生成的,那么这就是您将要做的所有事情——按asc排序。您需要更改链接,或将方向保留在单独的变量中<代码>变量最后排序='asc';函数toggleSort(){if(last_sort=='asc'){last_sort='desc'}类似的东西。@Marc B:暂时忘记sql注入。我正在切换-if(isset($by)){$q.=$by;}或者{$by='desc q.=$by;}一个问题在于您的AJAX数据对象。您已经硬编码了“desc MonkeyZeus”:我重写了这行:数据:({orderby:orderby,direction:'desc'}),表示数据:({orderby:orderby}),但它仍然不起作用。通过删除“direction”,您的PHP脚本将永远不知道SQL使用哪个方向。在jQuery中,您需要通过侦听表头上的单击来动态设置方向
<div id="content"></div>
$(document).ready(function() {
    loadData();
});

function loadData(orderby) {
    $.ajax({         
        url: 'display.php',         
        type: "POST",         
        data: ({orderby: orderby, direction: 'desc'}),         
        success: function(data){ 
            $("#content").hide();       
            $("#content").html(data);         
            $("#content").show();
            $('th').click(function(){
                    var orderby = $(this).attr('id');
                    loadData(orderby);
            });
        }     
    }); 
 }
$db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if (mysqli_connect_errno()) {
    printf("Connect failed: %s", mysqli_connect_error());
    exit;
}

if(isset($by) and $by==" ASC"){
    $by=" DESC";
}else{
    $by=" ASC";
}

if (isset($_POST["orderby"])) {
    $orderby = $_POST["orderby"];
    //echo $orderby;
}

//build a query on the database
$q = "Select * from uncompensated";
if (isset($_POST["orderby"])) {
    $q .= " order by " . $orderby;
} else {
    $q .= ' order by year2013';
}
if (isset($by)) {
    $q .= $by;
    echo $q;
} else {
    $by = ' DESC';
    $q .= $by;
    echo $q;
}

//echo $q;
$result = $db->query($q);

echo "<table cellspacing='0' >";
echo "<tr id='header'><th id='Name'>Name</th><th id='year2013'>2013</th><th id='year2012'>2012</th><th id='year2011'>2011</th><th id='year2010'>2010</th><th id='year2009'>2009</th><th id='year2008'>2008</th><th id='year2007'>2007</th><th id='year2006'>2006</th><th id='year2005'>2005</th><th id='year2004'>2004</th><th id='year2003note'>* 2003</th><th id='year2002'>2002</th><th id='year2001'>2001</th><th id='year2000'>2000</th><th id='year1999'>1999</th><th id='year1998'>1998</th><th id='year1997'>1997</th></tr>";
 while($row = $result->fetch_array(MYSQLI_ASSOC)) {
    (code)
}