Php 没有错误,但页面仍然为空,并传递变量
我设置了一个小测试项目,当你点击一只狼的名字时,它会把它们带到一个页面,我想用这个页面来个性化他们点击的狼的信息。该页面名为wolf.php。我试图使用passing变量$\u GET方法将URL分配给狼群id,即www.testsite.com/wolf.php?id=1,但是页面随后什么也不显示,即使我没有得到错误 这是主页(home.php)Php 没有错误,但页面仍然为空,并传递变量,php,mysql,variables,global-variables,echo,Php,Mysql,Variables,Global Variables,Echo,我设置了一个小测试项目,当你点击一只狼的名字时,它会把它们带到一个页面,我想用这个页面来个性化他们点击的狼的信息。该页面名为wolf.php。我试图使用passing变量$\u GET方法将URL分配给狼群id,即www.testsite.com/wolf.php?id=1,但是页面随后什么也不显示,即使我没有得到错误 这是主页(home.php) 使用错误报告(E\u ALL)打开错误报告;ini设置(“显示错误”,1)正在开发中,因此您可以在代码中看到致命的语法错误。还建议从mysql_*(
使用错误报告(E\u ALL)打开错误报告;ini设置(“显示错误”,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'];
}
最后,考虑使用PDO或MySQLi而不是旧的mysql_*()
函数,因为它们支持预先准备好的语句,从而比手动转义变量更安全。mysql_*()
函数计划弃用。使用error\u reporting(E\u ALL)打开错误报告;ini设置(“显示错误”,1)代码>正在开发中,因此您可以在代码中看到致命的语法错误。还建议从mysql_*()
调用中删除@
错误抑制运算符
<?php
$username = $_SESSION['username'];
$result = @mysql_query("SELECT * FROM wolves WHERE owner = '$username'");
最后一行有语法问题。意外的
串联运算符:
// 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'];
}
最后,考虑使用PDO或MySQLi而不是旧的mysql_*()
函数,因为它们支持预先准备好的语句,从而比手动转义变量更安全。mysql_*()
函数计划弃用。在第二个代码片段中,您不能将$result
视为数组;它是一个资源标识符。要获取数组,请执行以下操作:
<?php
$username = $_SESSION['username'];
$result = @mysql_query("SELECT * FROM wolves WHERE owner = '$username'");
$row = mysql_fetch_assoc($result);
echo $row['name'];
另外,请阅读SQL注入漏洞。在第二段代码中,您不能将$result
视为数组;它是一个资源标识符。要获取数组,请执行以下操作:
$row = mysql_fetch_assoc($result);
echo $row['name'];
另请阅读SQL注入漏洞。首先需要获取结果行
变量1-关联数组(值可作为字段名使用)
变量2-枚举数组(按索引,从零开始)
首先需要获取一个结果行
变量1-关联数组(值可作为字段名使用)
变量2-枚举数组(按索引,从零开始)
您的代码易受攻击。在进行查询之前,您需要使用数据库库的适当方法转义数据。您的代码易受攻击。在进行查询之前,您需要使用数据库库的适当方法来转义数据。我修复了语法问题,但仍然得到一个空白页。谢谢你关于SQL注入的警告,我会调查的。@Sunden如上所述,你还没有从结果集中提取一行。我修复了语法问题,但仍然得到一个空白页。感谢您提供有关SQL注入的警告,我将对此进行调查。@Sunden请参见上文,您尚未从结果集中获取一行。
$result = mysql_fetch_row($result);
echo $result[0];