Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.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+;MySQL问题:(_Php_Mysql_If Statement - Fatal编程技术网

PHP+;MySQL问题:(

PHP+;MySQL问题:(,php,mysql,if-statement,Php,Mysql,If Statement,我的代码有问题: if ($_GET['offline']) {$extranet = $_GET['offline'];} else {$extranet = $online;} $sql = mysqli_query($db,"UPDATE tbl_system SET value = '$extranet' WHERE property = 'extranet'"); echo $_GET['offline']; echo $extranet; echo $online; 在数据库中,p

我的代码有问题:

if ($_GET['offline']) {$extranet = $_GET['offline'];} else {$extranet = $online;}
$sql = mysqli_query($db,"UPDATE tbl_system SET value = '$extranet' WHERE property = 'extranet'");
echo $_GET['offline'];
echo $extranet;
echo $online;
在数据库中,property=extranet的字段的值为1。 回波结果:

$_GET['offline'] = 0 
$extranet        = 1
$online          = 1
现在,很明显,这里出了点问题

提供此GET的URL是:
?app=admincp&offline=0
,因此
$\u GET['offline']
不是问题所在

问题一定出在if语句中,但我无法理解

有什么想法吗

if ($_GET['offline'])
这将返回false,因为字符串“0”在PHP中的计算结果为false,因此if语句的条件永远不能计算为true。请使用or。例如:

if (isset($_GET['offline'])) { ... }
或:

在您的情况下,您需要知道该值是否正是字符串零“0”。我建议使用:


$\u GET['offline']
在您提供的URL中为零,因此
如果($\u GET['offline'])
和该块中的所有内容都不会被命中。请改用
isset()

$\u GET['offline']为0,0的计算结果为false,因此该语句正确。如果要检查脱机是否作为参数传递,则必须使用
isset()


Yikes!除了karim的评论-清理您的输入!您正在获取一个URL参数,并将其直接放入SQL查询中

?app=admincp&offline=';DROP table tbl_system;--
会毁了你的

if (strcmp($_GET['offline'],"0") === 0) {
    $extranet = $_GET['offline'];
} else {
    $extranet = $online;
}

如果未设置$\u GET['offline'],则会引发错误,最好使用
!isset($\u GET['offline'])

是否有代码实际设置了extranet的值?我将重写此代码以使其更清晰。确保正确初始化变量,在任何条件之前以一个漂亮的字符串打印出来,在所有条件完成后以类似的字符串打印出来,并更新帖子。然后我们将能够更好地帮助您。如果我读对了,offline设置为0,extranet设置为$online的值,从1yep开始,我添加了(卫生)一旦我能保证原始代码正常工作:)ty Koning baard,@TJT,yep:)是的,我添加了一旦我能保证原始代码正常工作:)
if (!isset($_GET['offline'])) {$extranet = $_GET['offline'];} else {$extranet = $online;}
?app=admincp&offline=';DROP table tbl_system;--
if (strcmp($_GET['offline'],"0") === 0) {
    $extranet = $_GET['offline'];
} else {
    $extranet = $online;
}