2012-11-13 2 views
1

c'est donc mes problèmes version courte:réponse Ajax ne fonctionne pas lorsque mysql_query a "ET" dans ce

Cela fonctionne:

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

j'obtenir un résultat passer par avec un pack while tout dans un tableau et avec json_encode le renvoyer à mon fichier ajax, où je liste le résultat. Et ça fonctionne parfaitement.

Mais quand je annonce une chose à la requête, il donne tout juste vide, donc cela ne fonctionne pas:

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

Donc, avec ce que les choses et ne fonctionnent pas seulement, mais seulement whit ajax, je veux dire si j'imprime simplement le tableau php fonctionne superbement.

Merci d'avance.

C'est le reste de mon php

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

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

echo json_encode($result); 

et mon 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

Vous devez imprimer JSON en réponse à AJAX, imprimer JSON et voir si c'est valide. – Dev

+0

Pourriez-vous nous montrer le reste du code PHP et du code AJAX? – 11684

+0

@ 11684 Je vais le poster maintenant, une seconde –

Répondre

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

Essayez:

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

est un exemple aussi ici sur la façon d'utiliser le 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

ok, mon mauvais, il fonctionne maintenant en PHP, mais ne le fait toujours pas en ajax –

+0

Pouvez-vous montrer votre appel ajax ou expliquer plus loin? – VicoMan

+0

.ajax $ ({ url: "mises à jour/isu.php", Type: "POST", données: forme, dataType: "JSON", succès: function (données) {// console.log (données); $ .each (données, fonction (i) { $ ("# table de résultats"). append ('' + données [i] .gyarto + '' + données [i] .termekcsalad + ' '+ données [i] .kiszereles +' '); }); } }); –

0

Essayez ceci; Pouvez-vous également consigner la chaîne SQL avant qu'elle ne soit exécutée et partagée.? Cela peut vous aider à voir à quoi ressemble la requête avant qu'elle ne soit exécutée, puis nous pouvons la modifier, puis modifier votre code php pour résoudre les problèmes. Il froid peut que certaines variables vous concaténer à la requête SQL sont des chaînes vides ou null, etc.

+0

Pourquoi? Une fois que vous comprenez ce que vous avez fait de mal, vous pouvez l'éviter la prochaine fois – 11684

+0

@mwangi cela ne fonctionne pas pour mon shoud longueur de var quelque chose? –

+0

c'est une mauvaise requête, vous ne pouvez pas utiliser des alias dans la clause 'WHERE' – Serjio

0

longueur Calculer de $some_variable en php, Pourquoi utilisez-vous mysql LENGTH? Il suffit de séparer vos requêtes si vous pouvez détecter en PHP cette longueur de $some_variable est 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 désolé mais ne fonctionne toujours pas, je pense vraiment que c'est le "ET" de la requête, car il works –

+0

Que contient '$ other_variable'? Strin statique ou requête sql ou nom de champ? Peut-être qu'il contient une citation simple ou double? – Serjio

+0

@ Mr.Sam Pouvez-vous nous fournir une requête SQL qui en résulte? Il suffit de lancer 'echo $ your_php_with_sql_string' – Serjio

0

En utilisant des données d'exemple « synthétiques » la requête fonctionne « comme supposé »

<?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()); 
} 

impressions

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

mais je doute que la requête fasse ce que vous avez l'intention de faire.
E.g. Si $some_variable est vide, il est plus facile de tester cela du côté php et d'ignorer complètement la requête - aucun enregistrement ne peut remplir les conditions dans ce cas.

Questions connexes