2013-03-26 133 views
-1

这句话有什么不对吗?未定义索引

错误回报:

说明:未定义指数:inputBlock

说明:未定义指数:inputHouseUnit

代码:

if($conn){ 
    $insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('$_POST[inputBlock]', '$_POST[inputHouseUnit]')"; 
} 
+0

请勿直接使用'$ _POST',在您的查询中未验证。 – 2013-03-26 07:26:37

+0

它说你没有在$ _POST这些名字的关键 - >检查是否有任何东西在你的'$ _POST',我认为执行这些代码发生在发布 – 2013-03-26 07:28:20

+0

之前,你可以尝试''或'1'='1 '/ *''或'; DROP TABLE tablename'它真的很神奇,我的意思是你的代码容易受到sql注入的影响,请逃脱所有请求,如果你不想让其他人去pow3ed你的数据库 – 2013-03-26 07:39:12

回答

0
$insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('".$_POST['inputBlock']."', '".$_POST['inputHouseUnit']."')"; 
1

PHP数组索引或者是数或字符串。

如果inputBlockinputHouseUnit是字符串变量的标识,那么你必须用$他们之前(例如,$_POST[$inputBlock])。

如果它们是文字字符串,请将它们包装在'(单引号)或"(双引号)(例如$_POST["inputBlock"])中。

显然,你将不得不小心转义单引号和双引号。另外,您应该在尝试将其放入数据库之前验证用户输入。

+0

你对文本字段的名称进行了什么分类? – 2013-03-26 07:34:24

+0

@Bryan对不起,我不明白? – Tushar 2013-03-26 07:35:04

+0

inputBlock是文本字段的名称/标识。在这种情况下,它是否被认为是文字串? – 2013-03-26 07:47:09

0

是的。它应该看起来像这样

if($conn){ 
    $insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('" . $_POST["inputBlock"] . "', '" . $_POST["inputHouseUnit"] . "')"; 
} 

我使用了字符串连接,所以你不必转义引号。

您还应该考虑将原始发布数据传递到数据库中的安全性非常不安全 - 永远不要信任您的用户。

+0

为什么在这个问题上每个人都没有明确的理由或评论为什么这样做呢? – Pankucins 2013-03-26 12:52:42

0

这里的所有答案都是错误的。甚至与这个问题相矛盾,在那里明确表示inputBlock被认为是数组索引。

这句话有什么不对吗?

没有。你的陈述完全有效。

你得到这些消息的原因是空的$ _POST数组。很可能你用GET方法调用了这段代码。

把你的代码放到这个if语句:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // your code goes here 
} 

此外,你必须总是正确地格式化您的查询。至少方式描述here

0

确保这些瓦尔正在从

$ _ POST [inputBlock给进 $ _ POST [inputHouseUnit]

给了$ SQL之前对他们的打印。

此外,请确保您的方法= POST指定。如果没有,这些变量将被作为GET。

0

存放在独立的变量个体后操作的值,然后在echo功能使用它们...这样...

$x=$_POST[inputBlock]; 
<br>$y=$_POST[inputHouseUnit]; 

然后替换在echo函数变量....

而且还是检查POST方法接收任何价值不怎么一回事,因为你可能刚刚只发送一个值,你的PHP网页... 未定义的指标往往是反击时,变量不从$_POST阵列得到任何价值。