2010-08-17 5 views
0

OK. J'ai ce code sur mon site:La raison de la requête MySQL ne fonctionne pas

<?php 
session_start(); 
include "database.php"; 
include "bruger.php"; 

$bruger = new bruger(); 
if($bruger->logget_ind()){ 

    $brugernavn = $_SESSION['brugernavn']; 
    $bruger_slash = addslashes($brugernavn); 

    $hnavnn = mysql_query(" SELECT hnavn FROM bruger WHERE brugernavn = '" . $bruger_slash . "'"); 
    $hnavn = mysql_fetch_row($hnavnn); 
    $hinfoo = mysql_query(" SELECT besked, Afsender FROM $hnavn[0]"); 
    while ($hinfo = mysql_fetch_array($hinfoo)){ 

    echo "<form method = post action = $PHP_SELF>\n"; 
    echo "Ja<input type=radio name=valg1 value=\"ja\"> Nej<input type=radio name=valg value=\"nej\">"; 
    echo "<input type=submit value=\"Svar\">\n"; 

    if (isset($_POST["valg1"])){ 
     $brugernavn = $_SESSION['brugernavn']; 
     $bruger_slash = addslashes($brugernavn); 
     $frahvem = $hinfo["Afsender"]; 
     $query = "UPDATE bruger SET `Status` = '$frahvem' WHERE brugernavn = '$bruger_slash'"; 
     mysql_query($query) or die (mysql_error()); 

     $query1 = "UPDATE bruger SET `Ansfra` = 'Nej' WHERE hnavn = '$frahvem'"; 
     mysql_query($query1) or die (mysql_error()); 

     echo "Du har nu givet dit svar!"; 
    } 
    echo "<br>"; 
    } 
} 
else { 
    echo "Du er ikke logget ind"; 
} 
?> 

J'ai essayé de trouver de l'aide dans huit jours maintenant, donc je suis désespéré :) Il semble que si elle ne fonctionne que la première mysql_query, mais pas le le prochain. Hmm ..

Quelqu'un qui peut voir ce qu'est la faute?

(désolé pour mon mauvais anglais;) ..)

+0

Essayez mysql_free_result ($ hnavnn); Peut-être que les ressources doivent être libérées. – Daisetsu

+0

'SELECT besked, Afsender FROM $ hnavn [0]' - avoir plusieurs tables avec la même structure et dans le même but n'est probablement pas un bon design. Il y a très probablement aussi un problème avec les deux éléments d'entrée-radio n'ayant pas le même nom (le second est manquant le '1 'final). – VolkerK

+0

Il est peu probable que ce soit votre vrai problème, mais c'est un problème néanmoins: utilisez 'mysql_real_escape_string()' pour le citer. 'addslashes()' a été conçu pour un but tout à fait différent et obtient parfois des erreurs de citations. – staticsan

Répondre

1

Il pourrait y avoir quelque chose de mal. Il n'y a pas assez d'informations pour le voir tout au long du processus de débogage. Cependant, voici quelques choses à essayer:

1- Implémentez la gestion des erreurs pour voir si quelque chose ne va pas avec la connectivité DB.

2- Confirmez que $ bruger_slash contient réellement une valeur.

3- Essayez d'ajouter les tiques Retour à la requête de hinfoo $:

$hinfoo = mysql_query(" SELECT besked, Afsender FROM `$hnavn[0]`"); 

4- Mise à jour de la variable de référence de tableau $ frahvem = $ hinfo [ "Afsender"]; utiliser des graduations uniques:

$frahvem = $hinfo['Afsender']; 
4

Toute la mysql_ * fonction peut échouer. Dans ce cas, ils vont retourner false et mysql_error() peut vous en dire plus sur la cause.
Utilisez ceci pour implémenter une sorte de gestion des erreurs.

exemple Rudimentary:

include "bruger.php"; 
define('DEBUGOUTPUT', 1); 
... 

    $bruger_slash = mysql_real_escape_string($brugernavn); // you should pass the mysql connection resource as 2nd paramter here 

    $hnavnn = mysql_query("SELECT hnavn FROM bruger WHERE brugernavn = '" . $bruger_slash . "'"); 
    if (!$hnavnn) { 
    if (defined('DEBUGOUTPUT') && DEBUGOUTPUT) { 
     echo 'mysql_error: ', mysql_error(), "\n"; 
    } 
    echo "query failed."; 
    return; 
    } 
    $hnavn = mysql_fetch_row($hnavnn); 
    if (!$hnavn) { 
    echo 'no such brugernavn'; 
    return; 
    } 
    $hinfoo = mysql_query(" SELECT besked, Afsender FROM `$hnavn[0]`"); 
    if (!$hinfoo) { 
    if (defined('DEBUGOUTPUT') && DEBUGOUTPUT) { 
     echo 'mysql_error: ', mysql_error(), "\n"; 
    } 
    echo "query failed."; 
    return; 
    } 
+0

Merci. Il me dit: "mysql_error: La table 'ugleugle_dk. Pony' n'existe pas la requête a échoué." Je n'ai pas de table appelée 'ugleugle_dk. Pony 'mais j'ai une table appelée Pony. Pony est $ hnavn [0] –

+0

ugleugle_dk est le nom de la base de données à laquelle il s'intéresse. Il semble qu'il y ait un espace devant le nom de la table. Essayez de supprimer tous les espaces. Cela devrait ressembler à «dbanme.table» et non à «dbname». table ' –

+0

MERCI! Cela résout mon problème. :) Je suis très heureux maintenant. Espace stupide. –

Questions connexes