-2

我正在尝试制作一个从 URL 中提取信息的脚本,例如index.php?picid=33409,并使用该编号(在这种情况下为 33409)提取保存在数据库中的图像,作为图像编号 33409。

但是,当我使用下面的代码时,它只有在 URL 中有 picid 时才能正常工作。如果只有 index.php,那么代码会显示每个 if 函数中的所有内容(我不希望它这样做),它会告诉我那个"Notice: Undefined index: picid"烦人的错误。

任何帮助将不胜感激!

<?php
if(empty($_GET['picid']))
    {
    $set="0";
    }
if(isset($_GET['picid'])) 
    {
    $set="1";
    }
if($set="0")
    {
    // code to do something
    }
if($set="1")
    {
    echo "all set";
    $picid = $_GET['picid'];
    // code to do something completely different using the picid
    }
?>
4

10 回答 10

3

在您的 if 语句中,您使用 = 赋值运算符,而您应该使用 == 比较。

于 2013-05-22T08:06:50.133 回答
1

通知很明显。如果您仅引用 index.php,则 if 条件会发出通知。尝试一些类似的东西

if(isset($_GET['picid'])&&$_GET['picid']!=''){
// the other conditions
}
于 2013-05-22T08:10:23.290 回答
1

您将值分配为布尔条件,而不是布尔表达式。

代替

if($set = "1")

你应该使用

if($set == "1")
于 2013-05-22T08:06:58.447 回答
1

你不需要做emptyisset

你可以用三元语句来做到这一点

$picid = (isset($_GET['picid')) ? $_GET['picid'] : null;

如果有,这将设置$picid为来自 url 的值,或者null如果没有

于 2013-05-22T08:07:04.040 回答
1

尝试使用isset功能。这应该足够了。

if(isset($_GET['picid']){
   $set=1;
}else{
   $set=0;
}
于 2013-05-22T08:08:05.777 回答
0

最好使用intval()

$picid = isset($_GET['picid']) ? intval($_GET['picid'],0) : 0;

if($picid)
{
  //do something with it
}
else
{
  //picid doesn't exists
}
于 2013-05-22T08:25:17.163 回答
0
if($set="0") <-- problem
{
// code to do something
}
if($set="1") <-- probelem 
{
echo "all set";
$picid = $_GET['picid'];
// code to do something completely different using the picid
}

那些需要==不是=

于 2013-05-22T08:08:19.333 回答
0
if (!empty($_GET['picid'])) {
    echo "all set";
    $picid = $_GET['picid'];
    // code to do something completely different using the picid
} else {
    // code to do something
}
于 2013-05-22T08:08:33.280 回答
0

使用array_key_exists

<?php

    if (array_key_exists('picid', $_GET)) {
         $picid = $_GET['picid']
         // code to do stuff with picid
    } else {
         // code to do stuff when no picid is provided
    }
?>
于 2013-05-22T08:07:27.463 回答
0

我建议将您的代码逻辑更改为以下内容:

$picid = 0;

if (isset($_GET['picid']) {
 $picid = intval($_GET['picid']);
}

if ($picid > 0) {
  //fetch it from the database
} else {
  //
}

您假设没有picid来自 URL。如果 GET 参数中有一个,请使用它的整数部分(以避免潜在的 SQL 注入)。如果没有,它的值仍然是初始值,你做另一件事。

于 2013-05-22T08:07:58.993 回答