Php 当mysql“U查询有”时,Ajax响应不起作用;及;在里面

Php 当mysql“U查询有”时,Ajax响应不起作用;及;在里面,php,jquery,mysql,sql,ajax,Php,Jquery,Mysql,Sql,Ajax,这是我的问题简短版本: 这是有效的: $query = mysql_query("SELECT * FROM `some_table` WHERE IF (LENGTH('$some_variable') > 0, `$other_variable` LIKE '%$some_variable%' , 0)"); $query = mysql_query("SELECT *

这是我的问题简短版本:

这是有效的:

$query = mysql_query("SELECT * FROM `some_table` 
                     WHERE IF (LENGTH('$some_variable') > 0, `$other_variable` LIKE
                               '%$some_variable%' , 0)");
$query = mysql_query("SELECT * 
                      FROM `some_table` 
                      WHERE `something` = `some_other_thing` AND 
                          IF (LENGTH('$some_variable') > 0, `$other_variable` 
                               LIKE '%$some_variable%' , 0)");
我得到一个结果,用while将其打包成一个数组,并用json_encode将其发送回我的ajax文件,在那里我列出了结果。而且它工作得很好

但是当我向查询添加一个内容时,它只返回空的内容,因此这不起作用:

$query = mysql_query("SELECT * FROM `some_table` 
                     WHERE IF (LENGTH('$some_variable') > 0, `$other_variable` LIKE
                               '%$some_variable%' , 0)");
$query = mysql_query("SELECT * 
                      FROM `some_table` 
                      WHERE `something` = `some_other_thing` AND 
                          IF (LENGTH('$some_variable') > 0, `$other_variable` 
                               LIKE '%$some_variable%' , 0)");
因此,有了,事情就不起作用了,但只有在使用ajax的情况下,我的意思是,如果我只是简单地将数组打印出来,php工作得非常出色

提前谢谢

这是我的php的其余部分

while ($value = mysql_fetch_array($query)) {

$result[] = array
            (       
                gyarto => $value['gyarto'],
                termekcsalad => $value['termekcsalad'],
                kiszereles => $value['kiszereles']
            );
}

echo json_encode($result);
还有我的jquery:

$.ajax({
                    url:"updates/isu.php",
                    type:"POST",
                    data: form,
                    dataType: "json",
                    success: function(data) {


                    $.each(data, function(i)                            
                    {
                       $("#result table").append('<tr><td>'+data[i].gyarto+' '+data[i].termekcsalad+' '+data[i].kiszereles+'</td></tr>');

                    }); 

                }
            });

        });
$.ajax({
url:“updates/isu.php”,
类型:“POST”,
数据:表格,
数据类型:“json”,
成功:功能(数据){
$。每个(数据、功能(i)
{
$(“#结果表”).append(“”+数据[i].gyarto+“”+数据[i].termekcsalad+“”+数据[i].kiszereles+”);
}); 
}
});
});
试试这个

 $sql = "SELECT *, LENGTH('$some_variable') as 'length_of_var'  
                     FROM some_table 
                     WHERE something=some_other_thing AND 
                           length_of_var > 0 AND 
                           `$other_variable` LIKE '%$some_variable%';";


 die($sql);//we will stop here and see how the query looks like.. If it's an AJAX request, you will need to check in your browser console. Use firebug or chrome developer tools.

$query = mysql_query($sql);
您还可以在sql字符串执行和共享之前记录它。这可以帮助您看到查询在执行之前的样子,然后我们可以修改它,然后编辑php代码来修复任何问题。您连接到SQL查询的一些变量可能是空字符串或null,等等

I think you are mixing php language in a mysql query.
尝试:

这里还有一个关于如何使用mysql\u fetch\u数组的示例

mysql_connect("localhost", "mysql_user", "mysql_password") or
    die("Could not connect: " . mysql_error());
mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    printf("ID: %s  Name: %s", $row["id"], $row["name"]);
}

mysql_free_result($result);

在php中计算
$some_变量的长度,为什么使用mysql
length
?如果可以在PHP中检测到
$some_variable
的长度大于0:

if (strlen($some_variable) > 0) {
   mysql_query("
      SELECT * 
      FROM `some_table` 
      WHERE `something` = `some_other_thing`
        AND `$other_variable` LIKE '%$some_variable%'")
} else {
   // do nothing because your where clause has condition like: something = another AND 0
   // so for each row it's false
}
使用一些“合成”示例数据,查询“按假设”工作

但我怀疑该查询是否符合您的意图。

例如,如果
$some_variable
为空,则在php端更容易测试该变量,并完全跳过查询-在这种情况下,任何记录都无法满足条件。

您必须打印JSON以响应AJAX,打印JSON并查看其是否有效。您能向我们展示其余的php代码和AJAX代码吗?@11684我现在将发布它,第二个示例数据(最好是以
插入到…值(…)
语句的形式)会很有帮助…@charlietfl但是在独立页面中,当查询使用“AND”时,它怎么可能纯粹是一个查询问题呢?一旦你明白自己做错了什么,你就可以下一步避免它time@mwangi这不适用于我的var长度应该是什么?这是一个错误的查询,您不能在
WHERE
clause@Serijio对不起,还是不行,我真的认为是“和”从查询中删除,因为它不工作,
$other\u变量
包含什么?静态strin或sql查询或字段名?也许它包含单引号或双引号?@Mr.Sam您能为我们提供结果SQL查询吗?只需运行带有sql字符串的echo$your_php\
$.ajax({url:“updates/isu.php”,键入:“POST”,数据:表单,数据类型:“json”,成功:函数(数据){//console.log(数据);$。每个(数据,函数(i){$(“#结果表”).append(''+data[i].gyarto+''+data[i].termekcsalad+''+data[i].kiszereles+'';}});当我用json_encode发回它时,它仍然不起作用。我什么也没有得到,但只有php它可以工作。。。我的意思是它和你写的一样,但是我需要一个“AND”在queryyes中是的,当然就像我说的,当我在standalon php页面上打印它时,它会返回好的结果
1, 1, 1, hello
3, 2, 2, hellboy