通过会话登录拉取SQL数据

时间:2012-10-16 15:56:34

标签: php

我正在尝试提取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 = * *&lt; - 它确实添加了我的用户名; 但是$ row [nicename]上的echo在页面上没有返回任何结果。

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

4 个答案:

答案 0 :(得分: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。

希望这有帮助。

答案 1 :(得分: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字段中显示Display name并保持登录名隐藏。感谢所有帮助过的人。

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

如果隐藏正常,请检查处理表单的PHP文件接收的内容(print_r($ _ POST)可能有帮助)。

如果它获得了值,那么请检查如何构建SQL查询。

发布更多代码可以让我们更好地了解问题的位置。