php - 没有错误,但页面仍然空白并传递变量

标签 php mysql variables global-variables echo

我设置了一个小测试项目,这样当您单击狼的名字时,它会将它们带到一个页面,我想使用该页面来个性化有关它们单击的任何狼的信息。该页面称为 wolf.php。我正在尝试使用传递变量 $_GET 方法将 URL 分配给 wolves id,即 www.testsite.com/wolf.php?id=1 但是即使我没有收到错误,页面也不会显示任何内容。

这是主页(home.php)

<?php
$username = $_SESSION['username'];
$result = @mysql_query("SELECT * FROM wolves WHERE owner = '$username'");
while($wolf = mysql_fetch_array($result))
{
echo "<a href= wolf.php?id=$wolf[id]>$wolf[name]</a>";
};
?>

单击此链接会将我带到 www.testsite.com/wolf.php?id=1(或任何 ID)。在 wolf.php 上我有这个:

<?php
$id = $_GET['id'];
$result = @mysql_query("SELECT name FROM wolves WHERE id = '$id'") or die("Error: no  
such wolf exists");
echo .$result['name'].
;
?>

我不确定哪里出错了,但这似乎不起作用。没有关于狼的 id 的信息出现。提前感谢您的帮助。

最佳答案

使用 error_reporting(E_ALL) 打开错误报告; ini_set('display_errors', 1); 在开发中,因此您会看到代码中的致命语法错误。还建议从 mysql_*() 调用中删除 @ 错误抑制运算符。

你在最后一行有语法问题。意外的 . 串联运算符:

// Wrong:
// Parse error: syntax error, unexpected '.'
echo .$result['name'].
;

// Should be:
echo $result['name'];

接下来,您还没有从查询中获取一行:

// mysql_query() won't error if there are no rows found.  Instead you have to check mysql_num_rows()
$result = mysql_query("SELECT name FROM wolves WHERE id = '$id'") or die("Query error: " . mysql_error());
// Zero rows found, echo error message.
if (mysql_num_rows($result) < 1) {
  echo "No such wolf.";
}
else {
  // Row found, fetch and display.
  $row = mysql_fetch_assoc($result);
  echo $row['name'];
}

请注意,此脚本对 SQL 注入(inject)是完全开放的。至少,对查询输入变量调用 mysql_real_escape_string()

$id = mysql_real_escape_string($_GET['id']);

最终,考虑使用 PDO 或 MySQLi 而不是旧的 mysql_*() 函数,因为它们支持准备好的语句,比手动转义变量更安全。 mysql_*() 函数计划弃用。

关于php - 没有错误,但页面仍然空白并传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603892/

相关文章:

php -/wp-admin/admin-ajax.php 上的 DDoS 攻击

php - 使用 PDO 准备语句插入多行

MySQL 拆分列中的分号,为每个拆分形成一个新行

c++ - 使用堆或堆栈变量更好吗?

nginx - 为什么 NGINX 忽略了我的查询字符串?

php - Magento 2:通过脚本发送订单确认电子邮件

php - 如何在 Javascript 代码中使用变量 Ex : src ="htp://www.url.com/file.php?id=[3434]"

php - Mysql查询语法错误

variables - 如何在 makefile 中定义变量,然后在 Fortran 代码中使用它

php - 使用表单选项值作为 PHP 变量来执行准备好的 SQL 语句