2010-08-17 54 views
0

好的。我有这样的代码在我的网站:找到MySQL查询不起作用的原因

<?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"; 
} 
?> 

我一直在努力,现在发现在八天内一些帮助,因此,我渴望:) 它看起来好像它只能运行第一的mysql_query,但不下一个。 嗯..

有人可以看到故障是什么?

(对不起我的英语不好);)

+0

尝试mysql_free_result($ hnavnn);也许资源需要被释放。 – Daisetsu 2010-08-17 23:57:43

+0

'SELECT besked,Afsender FROM $ hnavn [0]' - 具有相同结构和相同目的的多个表可能不是一个好设计。两个输入无线电元件的名称不一样(第二个输入无线电元件丢失尾部的'1')很可能也存在问题。 – VolkerK 2010-08-18 00:01:12

+0

这不太可能是你真正的问题,但它是一个问题:使用'mysql_real_escape_string()'来引用。 'addslashes()'是为不同的目的而设计的,在某些情况下会引起错误的引用。 – staticsan 2010-08-18 00:20:34

回答

1

可能有什么错。没有足够的信息来通过调试过程看到这一点。但是,这里有几件事要尝试:

1-实施错误处理以查看数据库连接是否有问题。

2-确认$ bruger_slash实际上包含一个值。

3-尝试增加回蜱到$ hinfoo查询:

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

4-更新数组引用变量$ frahvem = $ HINFO [ “Afsender”];使用单个滴答:

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

任何mysql_ *函数都可能失败。在这种情况下,他们将返回falsemysql_error()可以告诉你更多的原因。
使用它来实现某种错误处理。

基本的例子:

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

谢谢。它告诉我: “mysql_error:Table'ugleugle_dk。Pony'不存在查询失败。” 我没有一个名为'ugleugle_dk'的表。小马',但我有一张名为小马的表。 小马是$ hnavn [0] – 2010-08-18 00:23:32

+0

ugleugle_dk是它正在查找的数据库的名称。它看起来像表名前面可能有一个空格。尝试删除所有空格。它应该看起来像'dbanme.table'而不是'dbname。表' – 2010-08-18 00:27:15

+0

谢谢!它解决了我的问题。 :)我现在很开心。愚蠢的空间。 – 2010-08-18 00:38:28