Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP验证(SQL)和重定向_Php_Redirect - Fatal编程技术网

PHP验证(SQL)和重定向

PHP验证(SQL)和重定向,php,redirect,Php,Redirect,我使用GET从URL获取一个值“ID”,如下所示- if ( isset($_GET['id']) && (filter_var($_GET['id'], FILTER_VALIDATE_INT))) { $colname = $_GET['id']; } else { $URL="/index.php"; header ("Location: $URL"); exit(); } $query_validate = sprintf("SELECT * from surve

我使用GET从URL获取一个值“ID”,如下所示-

if ( isset($_GET['id']) && (filter_var($_GET['id'], FILTER_VALIDATE_INT))) {
  $colname = $_GET['id'];
}
else
{
$URL="/index.php";
header ("Location: $URL");
exit(); 
}
$query_validate = sprintf("SELECT * from surveys where id = %s", GetSQLValueString($colname, "int"));
$result_validate = mysql_query($query_validate, $conn) or die(mysql_error());
$row_validate = mysql_fetch_assoc($result_validate);
$num_validate = mysql_num_rows($row_validate);
if($num_validate==0)
{
$URL="/index.php";
header ("Location: $URL");
exit;   
}
然后我检查该ID的元素是否存在于表中,如下所示-

if ( isset($_GET['id']) && (filter_var($_GET['id'], FILTER_VALIDATE_INT))) {
  $colname = $_GET['id'];
}
else
{
$URL="/index.php";
header ("Location: $URL");
exit(); 
}
$query_validate = sprintf("SELECT * from surveys where id = %s", GetSQLValueString($colname, "int"));
$result_validate = mysql_query($query_validate, $conn) or die(mysql_error());
$row_validate = mysql_fetch_assoc($result_validate);
$num_validate = mysql_num_rows($row_validate);
if($num_validate==0)
{
$URL="/index.php";
header ("Location: $URL");
exit;   
}
我的想法是,当我输入url时,它会加载第一次调查,以此类推如果输入了无效ID(字母表、表中不存在ID等),则应将用户重定向回index.php,这是我的代码的基本前提。

但是,即使我转到URL,它也会加载页面并显示SQL语法错误。我知道在页面上给出输出后不能调用header函数,但这两个检查发生在非常接近开始的地方,我已确保没有输出发生在那里。

试试这个

$num_validate = mysql_num_rows($result_validate);
而不是

$num_validate = mysql_num_rows($row_validate);
代码:


“我已经确保那里没有输出”-您认为您所说的SQL错误消息是什么-如果没有输出…?%s表示字符串,%d表示整数。。只是FYImysql_*函数已被弃用尝试使用mysqli…通过
error_reporting(0)
@Nouphal.M关闭error_reporting(错误报告)@Nouphal.M或更好:PDO做了更改,没有帮助:(添加
@ob_start()
页面顶部无更改:\n即使是第一次检查也不起作用,更不用说SQL checkAn SQL语法错误了。正如我所说,验证没有发生,因此它将值“abc”传递为“ID”。数字过滤器和Isset函数似乎都不起作用……错误是“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取第1行中使用的正确语法,即“near”和“active=”y”“”这是第一个实际处理此页面功能的SQL查询。理想情况下,如果正在进行验证,它甚至不会到达该行:(这就是我感到困惑的原因