2012-11-13 9 views
1

,所以這是我的問題,短版:Ajax響應時的mysql_query有「和」它

這工作:

$query = mysql_query("SELECT * FROM `some_table` 
        WHERE IF (LENGTH('$some_variable') > 0, `$other_variable` LIKE 
           '%$some_variable%' , 0)"); 

我得到的結果通過它去了,而包它全部放在一個數組中,並且使用json_encode將其發回給我的ajax文件,在那裏列出結果。它完美的作品。

但是,當我的廣告一件事查詢它只是給空空地回來,所以這不起作用:

$query = mysql_query("SELECT * 
         FROM `some_table` 
         WHERE `something` = `some_other_thing` AND 
          IF (LENGTH('$some_variable') > 0, `$other_variable` 
           LIKE '%$some_variable%' , 0)"); 
事情

所以只要不工作,但只有白衣阿賈克斯,我的意思是如果我只是打印陣列出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>'); 

        }); 

       } 
      }); 

     }); 
+0

您必須打印JSON才能響應AJAX,打印JSON並查看其是否有效。 – Dev

+0

您能告訴我們其他的PHP代碼和AJAX代碼嗎? – 11684

+0

@ 11684我現在會發布它,一秒 –

回答

3
I think you are mixing php language in a mysql query. 

嘗試:

$query = mysql_query("SELECT * FROMsome_table WHEREsomething=some_other_thing AND (LENGTH('$some_variable') > 0 AND '$other_variable` LIKE '%$some_variable%')"); 

而且這裏是如何使用mysql_fetch_array個例

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); 
+0

好吧,我的壞,它現在在php中工作,但仍然不在ajax –

+0

你可以顯示你的ajax調用或進一步解釋嗎? – VicoMan

+0

$阿賈克斯({ 網址: 「更新/ isu.php」, 類型: 「POST」, 數據:形式, 數據類型: 「JSON」, 成功:功能(數據){// 的console.log (data); $ .each(data,function(i) {(「#result table」)。append('​​'+ data [i] .gyarto +''+ data [i] .termekcsalad +' '+ data [i] .kiszereles +''); }); } }); –

0

試試這個;

$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查詢變量是空字符串或空,等

+0

爲什麼?一旦你明白你做錯了什麼,你可以避免它下一次 – 11684

+0

@mwangi這不適合我的長度var是什麼? –

+0

這是一個錯誤的查詢,你不能在'WHERE'子句中使用別名 – Serjio

0

在PHP $some_variable計算長度,你爲什麼用mysql LENGTH?剛分開你的查詢,如果你能在PHP檢測$some_variable該長度爲greter 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 
} 
+0

@Serijio抱歉,但仍然無法正常工作,我真的認爲這是查詢中的「AND」,因爲除了它作品 –

+0

'$ other_variable'包含什麼?靜態嚴格或sql查詢或字段名稱?也許它包含單引號或雙引號? – Serjio

+0

@ Mr.Sam您能向我們提供生成的SQL查詢嗎?只需運行'echo $ your_php_with_sql_string' – Serjio

0

使用一些「合成」示例數據的查詢工作「爲假定」

<?php 
mysql_connect('localhost', 'localonly', 'localonly') or die(mysql_error()); 
mysql_select_db('test') or die(mysql_error()); 
setup(); 

$other_variable = 'foo'; 
$some_variable = 'hell'; 
$query = mysql_query("SELECT * 
         FROM `some_table` 
         WHERE `something` = `some_other_thing` AND 
          IF (LENGTH('$some_variable') > 0, `$other_variable` 
           LIKE '%$some_variable%' , 0)");       
if (!$query) die(mysql_error()); 
while(false!==($row=mysql_fetch_assoc($query))) { 
    echo join(', ', $row), "\n"; 
} 

function setup() { 
    mysql_query(' 
     CREATE TEMPORARY TABLE some_table ( 
      id int auto_increment, 
      something int, 
      some_other_thing int, 
      foo varchar(32), 
      primary key(id) 
     ) 
    ') or die(mysql_error()); 

    mysql_query("INSERT INTO some_table (something, some_other_thing, foo) VALUES 
     (1, 1, 'hello'), 
     (1, 1, 'lalala'), 
     (2, 2, 'hellboy') 
    ") or die(mysql_error()); 
} 

打印

1, 1, 1, hello 
3, 2, 2, hellboy 

但我懷疑查詢是否做你打算做的事情。
例如如果$some_variable爲空,則更容易在PHP端進行測試並完全跳過查詢 - 沒有記錄可以充分滿足此情況下的條件。