这个说法有什么问题吗?
错误返回:
注意:未定义索引:inputBlock
注意:未定义索引:inputHouseUnit
代码:
if($conn){
$insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('$_POST[inputBlock]', '$_POST[inputHouseUnit]')";
}
PHP 数组索引是数字或字符串。
如果inputBlock
和inputHouseUnit
是字符串变量的标识符,则必须在它们前面加上$
(例如,$_POST[$inputBlock]
)。
如果它们是文字字符串,请将它们包含在'
(单引号)或"
(双引号)中(例如,$_POST["inputBlock"]
)。
显然,您必须小心转义单引号和双引号。此外,您应该在尝试将其放入数据库之前验证您的用户输入。
这里的所有答案都是错误的。甚至与这个问题相矛盾,显然表明它inputBlock
被认为是数组索引。
这个说法有什么问题吗?
没有。你的陈述完全有效。
您收到这些消息的原因是空的 $_POST 数组。您很可能使用 GET 方法调用此代码。
将您的代码放入此 if 语句中:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// your code goes here
}
此外,您必须始终正确格式化查询。至少这里描述的方式
就在这里。它应该看起来像这样
if($conn){
$insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('" . $_POST["inputBlock"] . "', '" . $_POST["inputHouseUnit"] . "')";
}
我使用了字符串连接,因此您不必转义引号。
您还应该考虑安全性,因为将原始帖子数据传递到数据库是非常不安全的 - 永远不要相信您的用户。
$insertData = "INSERT INTO ESTATEUNIT (BLOCK, UNIT) VALUES ('".$_POST['inputBlock']."', '".$_POST['inputHouseUnit']."')";
将各个后期操作的值存储在单独的变量中,然后在echo
函数中使用它们......就像这样......
$x=$_POST[inputBlock];
<br>$y=$_POST[inputHouseUnit];
然后替换echo
函数中的变量....
还要检查 post 方法是否接收到任何值,因为您可能只向 php 页面发送了一个值...当变量没有从$_POST
数组中获取任何值时,通常会计算未定义的索引。
确保这些变量是从
$_POST[inputBlock] $_POST[inputHouseUnit]
在 $sql 之前打印它们。
另外,请确保您指定了 method=POST 。如果没有,这些变量将作为 GET 提供。