【问题标题】:get value from MySQL database with PHP使用 PHP 从 MySQL 数据库中获取价值
【发布时间】:2010-06-15 17:31:25
【问题描述】:
$from = $_POST['from'];
$to = $_POST['to'];
$message = $_POST['message'];

$query  = "SELECT * FROM Users WHERE `user_name` = '$from' LIMIT 1";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $fromID = $row['user_id'];
} 

我试图让 $formID 成为我数据库中用户的 user_id。用户表中的每一行都是这样的:

user_id | user_name | user_type
   1    |  Hristo   |   Agent

所以我想要$from = 1,但上面的代码不起作用。任何想法为什么?

【问题讨论】:

  • 在我看来,您并没有与数据库建立实时连接。你能告诉我们你使用mysql_connect的代码吗?
  • 你是对的。我没有连接到数据库。现在我和它给出了一个错误。 FireBug 说 500 内部服务器错误
  • 你能贴出你使用的代码吗?
  • 如果我的用户名是1'; DROP TABLE Users; --怎么办
  • 根据我从您的 cmets 中看到的情况,您可能根本没有接触到这部分代码吗?您的 echo 不打印任何内容,并且您收到 500 个错误。尝试在您的 db-connect 和此查询之间放置类似 die('Reached line: '.__LINE__); 的内容,并查看该消息是否出现。如果是的话,把它放在查询之后,看看它是否仍然出现......

标签: php mysql database


【解决方案1】:

试试这个:

$from = mysql_real_escape_string($_POST['from']);
$to = mysql_real_escape_string($_POST['to']);
$message = mysql_real_escape_string($_POST['message']);

$query  = "SELECT * FROM Users WHERE user_name = '$from' LIMIT 1";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_assoc($result)) {
    $fromID = $row['user_id'];
}

另外,请确保:

  • 您已连接到数据库
  • 您确实从帖子中获取了数据,请尝试使用您的变量 var_dump,例如 var_dump($from)

【讨论】:

  • 我现在已经连接到数据库并且$from, $to, $message 都是正确的!
  • 拒绝访问用户'Hristo'@'localhost'(使用密码:否)
  • @Hristo:这意味着你没有连接到数据库。确保您指定了正确的数据库信息。另见:php-mysql-tutorial.com/wikis/mysql-tutorials/…
  • @Sarfraz... 我相信我已连接到数据库,因为我可以在代码的另一部分成功显示用户名。我仍在调查它,这可能是一个愚蠢的错误。但是我会回去检查数据库连接代码。谢谢。
  • 你是对的......我很抱歉。我认为我已连接到数据库,因为我记得输入了require_once("db.php"),但我可能使用 Ctr-Z 删除了它。现在工作:) 谢谢
【解决方案2】:

改用 mysql_fetch_assoc

【讨论】:

  • 似乎不起作用...我想我永远不会进入循环...我在 while 循环内的赋值之后放置了一个 echo $fromID 并且它没有打印任何东西:/
【解决方案3】:

while($row =mysql_fetch_assoc($result)){ $fromID = $row['user_id']; }

【讨论】:

  • 似乎没有工作......我想我永远不会进入循环......我在 while 循环内的赋值之后放了一个 echo $fromID 并且它没有打印任何东西:/
【解决方案4】:

虽然应该。 试试这个代码

$from    = mysql_real_escape_string($_POST['from']);
$to      = mysql_real_escape_string($_POST['to']);
$message = mysql_real_escape_string($_POST['message']);

$query  = "SELECT * FROM Users WHERE `user_name` = '$from' LIMIT 1";
$result = mysql_query($query) or trigger_error(mysql_error().$query);
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$fromID = $row['user_id'];
echo $fromID;

如果它不会抛出错误但仍然不打印id,请添加此行

var_dump($row);

在这里发布它的输出

并不是说您不应该使用用户名而是用户 ID 来称呼特定用户。

【讨论】:

  • 我没有连接到数据库...现在我连接了,它给出了一个错误
  • @Hristo 很好,这意味着您看不到任何错误,或者您的数据库中没有此类记录。确保两件事
  • 谢谢。我拥有的唯一错误信息来自 FireBug,上面写着500 Internal Server Error。我会继续努力的。谢谢
  • @Hristo 要查看实际的错误消息,您必须参考 web-server error_log。你能找到一个吗?
  • /private/etc/apache2/error_log 说“[Tue Jun 15 12:49:44 2010] [error] [client ::1] PHP Notice: Use of undefined constant PASSWORD - 假定为 'PASSWORD ' 在 /Library/WebServer/Documents/jQueryChat/db.php 第 5 行,引用者:localhost/jQueryChat/chat.php"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
  • 2015-03-25
  • 2017-11-09
  • 2020-11-15
相关资源
最近更新 更多