PHP - MySQL 在哪里不工作


PHP - MySQL WHERE not work

当我将此代码添加到我的 Php 文件中时

    include "sql_connect.php";
    $query_blog="SELECT * FROM messages";
    $result_blog=mysql_query($query_blog);
    $num_blog=mysql_numrows($result_blog);
    mysql_close();
        $sql_index_menu="0";
        while ($sql_index_menu < $num) {
        $msg_subject=mysql_result($result,$sql_index_menu,"subject");
        $msg_id=mysql_result($result,$sql_index_menu,"id");
        $msg_from=mysql_result($result,$sql_index_menu,"from");
        $msg_to=mysql_result($result,$sql_index_menu,"recipient");
        $msg_text=mysql_result($result,$sql_index_menu,"text");
        $msg_time=mysql_result($result,$sql_index_menu,"time");
        $msg_read=mysql_result($result,$sql_index_menu,"readed");
        ?>
            <tr>
                <td><a href="?action=view&id=<?php echo $msg_id; ?>&lang=<?php echo $actLang; ?>"><?php if($msg_read == "0") {echo "<img src='/images/message.gif' width='32' height='32'>";} else {echo "<img src='/images/message.png' width='32' height='32'>";}?> <?php echo $msg_time; ?></a></td><td><a href="?action=view&id=<?php echo $msg_id; ?>&lang=<?php echo $actLang; ?>"><?php echo $msg_subject; ?></a></td><td><a href="?action=view&id=<?php echo $msg_id; ?>&lang=<?php echo $actLang; ?>"><?php echo $msg_from; ?></a></td>
            </tr>

    <?php
$sql_index_menu++;
}

一切都有效,但是,当我将其添加到 $query_blog 时

$query_blog="SELECT * FROM messages WHERE recipent='$username'";

所以它行不通..

试图用我的名字更改$username,但它仍然不起作用。

这段代码正在工作,所以我复制了它,但仍然一无所获......

            include "sql_connect.php";
    $query="UPDATE messages
            SET readed='1'
            WHERE id='$id'";
    $result=mysql_query($query);
    $num=mysql_numrows($result);
    mysql_close();
    include "sql_connect.php";
    $query_blog="SELECT * FROM messages WHERE id='$id'";
    $result_blog=mysql_query($query_blog);
    $num_blog=mysql_numrows($result_blog);
    mysql_close();

    $msg_text=mysql_result($result_blog,$sql_index_blog,"text");
    $msg_from=mysql_result($result_blog,$sql_index_blog,"from");
    $msg_subject=mysql_result($result_blog,$sql_index_blog,"subject");
    $msg_time=mysql_result($result_blog,$sql_index_blog,"time");

你可以帮我吗?

我禁用了页面所需的登录,所以现在您可以看到该页面(抱歉语言:D(如您所见,没有错误网站

前所述,有一个拼写错误,无论如何,您输入了收件人 - 我建议您使用 mysql_error(( 函数来调试您的代码,一个例子是:

$result=mysql_query($query) or die("<b>error:</b>".mysql_error()."line:".__LINE__);

在PHP中调试代码的最简单方法是使用echoprint_r

在这种情况下,您可以在设置后在 $query_blog 上包含 echo,并在 mysql IDE(或 mysql 命令行(中运行结果。

$query_blog="SELECT * FROM messages WHERE recipent='$username'";    
echo $query_blog;

此外,在 where 上使用引号不是一个很好的 msyql 做法,因为您的代码容易受到注入的影响。

相反,请使用以下内容:

$result = sprintf("SELECT * FROM messages WHERE recipent='%s'", mysql_real_escape_string($username));
$result = mysql_query($query);
if (!$result) {
    $message  = 'Invalid query: ' . mysql_error() . "'n";
    $message .= 'Whole query: ' . $result
    die($message);
}

如果你从php查询mysql数据库,并且你想在查询中使用php变量,你必须转义它们,否则你传递的是字符串'$username',而不是存储在$username中的值。

这对你有用吗?

$query_blog="SELECT * FROM messages WHERE recipent='" . $username . "'";
var_dump($query_blog);