我使用以下代码收到以下错误:
注意:未定义的变量:错误 C:\ xampp \ htdocs \ test \ projects \ Learning \ php \ Databases \ Forms and 第35行的数据库\ project.php
代码:
<?php
$clicked = false;
if($clicked == false && isset($_POST['submit'])) {
if ($_POST['label'] == '') {
echo "<p>You must enter in a label!</p>";
$error = true;
}
if ($_POST['url'] == '') {
echo "<p>You must enter in a url!</p>";
$error = true;
}
if ($_POST['status'] == '') {
echo "<p>You must enter in a status (0 or 1)!</p>";
$error = true;
}
}
if ($error != true) {
if (isset($_POST['submit']) && $_POST['submit'] == '1' ) {
$query = "INSERT INTO nav (label, url, target, status, position) VALUES ('$_POST[label]', '$_POST[url]', '$_POST[target]', $_POST[status], $_POST[position])";
$result = mysqli_query($dbc, $query);
if ($result) {
echo "<p>You've added a new navigation link!</p>";
}
else {
echo "<p>An error has occured!</p>";
echo mysqli_error($dbc);
echo '<p>'.$query.'</p>';
}
$clicked = true;//submit button replaced
}
}
?>
<h1>Navigation</h1>
<h5>*Required Fields</h5>
<form action="project.php" method="post">
<label>*Label:</label>
<p><input type="text" name="label" size="50" placeholder="Enter a Label" value=""/></p>
<label>Position:</label>
<p><input type="text" name="position" size="10" placeholder="Enter a Position" value=""/></p>
<label>*URL:</label>
<p><input type="text" name="url" size="50" placeholder="Enter a URL" value=""/></p>
<label>Target:</label>
<p><input type="text" name="target" size="50" placeholder="Enter a target" value=""/></p>
<label>*Status:</label>
<p><input type="text" name="status" size="10" value="" /></p>
<?php
if ($clicked == false) {
echo '<p><button type="submit" name="submit" value = "1" >Add Navigation Link</button></p>';
}
else {
echo '<p><a href "project.php" id = resetBtn>Do Another</a></p>';
}
?>
当我做出以下更改时:
if($clicked == false && $_POST['submit'] == "1") {
if ($_POST['label'] == '') {
echo "<p>You must enter in a label!</p>";
$error = true;
}
if ($_POST['url'] == '') {
echo "<p>You must enter in a url!</p>";
$error = true;
}
if ($_POST['status'] == '') {
echo "<p>You must enter in a status (0 or 1)!</p>";
$error = true;
}
}
我收到这些错误:
注意:未定义的索引:提交 C:\ xampp \ htdocs \ test \ projects \ Learning \ php \ Databases \ Forms and 第18行的数据库\ project.php
&安培;
注意:未定义的变量:错误 C:\ xampp \ htdocs \ test \ projects \ Learning \ php \ Databases \ Forms and 第35行的数据库\ project.php
如此明显的名称按钮&#34;提交&#34;不被人看见&#34;无论出于何种原因我相信。这对我来说有点意义,有点......如果我没有弄错:php从头到尾以线性方式读取,并且因为表单在if语句之下,所以索引还不存在。我认为这进一步证实了这样一个事实:一旦我点击提交按钮,所有错误都会消失,因此if语句中的if语句的错误(echo)语句就会被执行。
这令人难以置信。这不起作用......
if(isset($_POST['submit']) && $_POST['submit'] == '1') {
if (isset($_POST['label']) && $_POST['label'] == '') {
echo "<p>You must enter in a label!</p>";
$error = true;
}
if (isset($_POST['url']) && $_POST['url'] == '') {
echo "<p>You must enter in a url!</p>";
$error = true;
}
if (isset($_POST['status']) && $_POST['status'] == '') {
echo "<p>You must enter in a status (0 or 1)!</p>";
$error = true;
}
}
... YET,在以前版本的代码中,isset和&#34;的组合等于&#34;对于if语句的条件,解决了Unidentified索引问题,因为它涉及$ _POST [&#39; submit&#39;],这里的代码如下: ps:因为它与这个特定的代码块有关,以下链接的tutorial中的同伴,我跟随它,没有出现任何这些错误,尽管我做了完全相同的事情像他一样。
<?php
$clicked = false;
if (isset($_POST['submit']) && $_POST['submit'] == '1' ) {
$query = "INSERT INTO nav (label, url, target, status, position) VALUES ('$_POST[label]', '$_POST[url]', '$_POST[target]', $_POST[status], $_POST[position])";
$result = mysqli_query($dbc, $query);
if ($result) {
echo "<p>You've added a new navigation link!</p>";}
else {
echo "<p>An error has occured!</p>";
echo mysqli_error($dbc);
echo '<p>'.$query.'</p>';
}
$clicked = true;//submit button replaced
}
?>
<h1>Navigation</h1>
<h5>*Required Fields</h5>
<form action="project2.php" method="post">
<label>*Label:</label>
<p><input type="text" name="label" size="50" placeholder="Enter a Label" value=""/></p>
<label>Position:</label>
<p><input type="text" name="position" size="10" placeholder="Enter a Position" value=""/></p>
<label>*URL:</label>
<p><input type="text" name="url" size="50" placeholder="Enter a URL" value=""/></p>
<label>Target:</label>
<p><input type="text" name="target" size="50" placeholder="Enter a target" value=""/></p>
<label>*Status:</label>
<p><input type="text" name="status" size="10" value="" /></p>
<?php
if ($clicked == false) {
echo '<p><button type="submit" name="submit" value = "1" >Add Navigation Link</button></p>';
}
else {
echo '<p><a href "project2.php" id = resetBtn>Do Another</a></p>';
}
?>
再次,这很好,没有错误。那么为什么我在我发布的第一个代码块中得到了undefine变量错误?未定义的变量是由于后续的if语句未能执行而产生的,这就是我假设与索引问题有关的问题,但是,错误并没有反映出来!
当我用$ clicked == false替换条件时,如下所示:
$clicked = false;
if($clicked == false) {
if ($_POST['label'] == '') {
echo "<p>You must enter in a label!</p>";
$error = true;
}
if ($_POST['url'] == '') {
echo "<p>You must enter in a url!</p>";
$error = true;
}
if ($_POST['status'] == '') {
echo "<p>You must enter in a status (0 or 1)!</p>";
$error = true;
}
}
我得到这三个未定义的索引错误与BLOODY CODE一起成功执行,尽管三个索引被认为是未定义的:
注意:未定义的索引:第20行的C:\ xampp \ htdocs \ test \ projects \ Learning \ php \ Databases \ Forms和Databases \ project4.php中的标签 您必须输入标签!
注意:第24行的C:\ xampp \ htdocs \ test \ projects \ Learning \ php \ Databases \ Forms和Databases \ project4.php中的未定义索引:url 你必须输入一个网址!
注意:未定义的索引:第28行的C:\ xampp \ htdocs \ test \ projects \ Learning \ php \ Databases \ Forms和Databases \ project4.php中的状态 您必须输入状态(0或1)!
答案 0 :(得分:2)
您需要在第一个IF语句
之前定义$ error变量$error = true;
因为PHP处理器对此一无所知
同样在代码中没有关于已定义的数据库连接,您需要定义$ dbc变量
$dbc = mysqli_connect("localhost","my_user","my_password","my_db");
答案 1 :(得分:0)
有很多示例代码,我一直没有看过,但是......长话短说,你的错误的解释如下:
注意:未定义的变量
当您尝试访问/使用它时,您的变量是未初始化的。
echo $_HaveNotSetThisVar; // as this is not set prior to using. You're getting an error
和
注意:未定义的索引:
就像你之前的错误一样。这次采用数组形式:
echo $Array['NonExistantKey']; // Undefined index
对此的解决方案是包装变量,这些变量可能并不总是设置为和表单或错误处理:
实际用法:
if (isset($_HaveNotSetThisVar)){
echo "Variable Set";
}
和数组相同:
if (isset($Array['NonExistantKey'])){
echo "Array Key Set";
}
这是错误处理的基础,但可以与其他功能堆叠在一起,以便进行更深入的处理。
<强> P.S 强>
另一件要确保的事情是,您使用的是正确的变量名称,未定义的索引/变量也可能由拼写错误引起:
$Vaar = "Test";
echo $Var; // Undefined Error