1

我正在尝试提取 SQL 数据。用户的登录名是他们的用户名,但我不希望将其显示给任何其他用户。因此,我定义了 nicename。这是另一个与用户登录信息无关的显示名称;当我尝试发送消息时,我希望 from 字段显示其显示名称;有谁知道为什么这最终不会通过 from 字段中的查询发送任何数据?

<?php
$link = mysqli_connect("$server", "$user", "$pass", "$webdb");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT nicename FROM user WHERE name=$_SESSION['admin_login']";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$display_name = $row['nicename'];
{
echo '<input name="from" type="hidden" value="' .$display_name.'">';
}
mysqli_free_result($result);
mysqli_close($link);
?>

好的,所以我运行了查询并修复了显示名称变量;当我收到查询时。

INSERT INTO messages (`owner`, `from`, `content`, `date`, `title`) VALUES ('Morgan', '', 'Query', 'Oct/16/2012', 'Testing The ')

From 变量仍然不显示任何内容;我在我的网站上添加了一个调试页面,我在其中输入了我的查询

$query = "SELECT nicename FROM user WHERE username=$_SESSION[admin_login]";
$result = mysqli_query($link, $query);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);

然后我回显了我的查询并回显了 $row[nicename] 我在页面上收到的位置: SELECT nicename FROM user WHERE username= * *<-- 它确实添加了我的用户名;但是 $row[nicename] 上的回显在页面上没有返回任何结果。

{
echo $query;//<--Returns Query with the correct login variable.
echo '<br>';
echo $row['nicename'];//<--Returns no info.
}
4

4 回答 4

2

在发现错误的人的帮助下进行调试后,我的查询最终是:

$query = "SELECT nicename FROM user WHERE username='$_SESSION[admin_login]'";

我在表单上的输入是

echo '<input name="from" type="hidden" value="' .$display_name.'">';

并且 $display_name 定义为 $row['nicename'] 这些设置在 From 字段中显示显示名称并隐藏登录名。感谢所有帮助过的人。

于 2012-10-16T17:27:10.647 回答
2

改变这个:

$display_name = $row['title'];

对此:

$display_name = $row['nicename'];
  • 我总是喜欢在我的 SQL 语句中使用普通的 PHP 变量而不是会话变量。这可以避免与数据类型混淆。

    $username = $_SESSION['admin_login'];
    $query = "SELECT nicename FROM user WHERE name = '$username'";

另一个例子:

$chatroomNumber = intval($_SESSION['chatroomid']);
$query = "SELECT * FROM rooms WHERE chatroomnumber = $chatroomNumber";

这可确保您在 SQL 语句中使用 int。

希望这可以帮助。

于 2012-10-16T16:05:19.940 回答
1

首先在浏览器中检查 from 的源代码,以检查它是否创建了具有正确值的隐藏输入。

如果隐藏没问题,请检查处理表单的 PHP 文件接收到的内容(print_r($_POST) 可能会有所帮助)。

如果它得到了值,那么检查你是如何构建 SQL 查询的。

发布更多代码可以让我们更好地了解问题所在。

于 2012-10-16T16:18:36.100 回答
1

根据其中$_SESSION['admin_login']包含的内容,您可能需要引用它:

$query = 'SELECT nicename FROM user WHERE name="' . $_SESSION['admin_login'] . '"';
于 2012-10-16T15:58:24.590 回答