我正在尝试提取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.
}
答案 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查询。
发布更多代码可以让我们更好地了解问题的位置。