快速提问,当使用$ _GET传递值时,我使用isset来检查值是否已设置然后赋值,在设置值之前处理的最佳方法是什么?
EG客户端点击一个模态,弹出一个弹出窗口的信息。
目前我在页面顶部显示一个php错误,表示未设置$ _GET值,这很好,但在生产中这不太理想。
附上一些代码示例。
<?php
// checks to see if the movie id is actually set in url.
if(isset($_GET['movie_id'])) {
$movieID = $_GET['movie_id'];
} else {
echo MovieId is not set.
}
echo $movieID;
?>
添加了给我错误的实际代码
<?php
require_once ($_SERVER['DOCUMENT_ROOT'].'**/core/init.php');
if(isset($_GET['id'])) {
$id = $_GET['id'];
$id = (int)$id;
echo $id;
}
$sql = "SELECT * FROM wheels WHERE recid = '$id'";
$result = $db->query($sql);
$product = mysqli_fetch_assoc($result);
?>
注意: **将文件目录替换为不需要。
错误:
注意:未定义的变量:id in 第11行** \ includes \ quickModal.php
第11行是$sql
行。
答案 0 :(得分:3)
您正在正确执行此操作,在PHP中使用isset()
函数来检查该值是否已设置:
确定变量是否已设置且不是NULL
if(isset($_GET['movie_id'])) {
$movieID = $_GET['movie_id'];
} else {
echo MovieId is not set.
}
在代码的上下文中,您可以将查询放在if语句中,检查是否设置了$_GET
。这将阻止在未设置$_GET
时执行SQL语句:
if(isset($_GET['id'])) {
$id = $_GET['id'];
$id = (int)$id;
echo $id;
$sql = "SELECT * FROM wheels WHERE recid = '$id'";
$result = $db->query($sql);
$product = mysqli_fetch_assoc($result);
}
另外,要回显字符串,您需要引号:
echo "MovieId is not set.";