验证表工作但有错误

时间:2013-12-30 23:53:16

标签: php forms validation

我为葡萄酒数据库创建了一个表单,除非填充了所有字段,否则不会提交。我一直收到“未定义的变量”错误。我是新手,所以我不知道如何找到它甚至修复它。当填充所有字段(并且它实际上将记录提交到数据库)时,错误发生在带有“if(!$ error)”的行上,并且$ error的行是缺少字段的行(并且不提交到数据库)。

(!)注意:未定义的变量:第29行的C:\ wamp \ www \ Wine \ insert.php中的错误 调用堆栈

时间记忆功能位置

1 0.0010 262984 {main}().. \ insert.php:0 需要评论 再次购买Y / N缺失 由于缺少数据,无法插入记录。点击此处返回

这是我的代码:

<?php
$link=mysqli_connect('localhost', 'root', 'password','winelist');
if (!$link) {
    die('Could not connect: ' . mysqli_error());
}

$wine = mysql_real_escape_string($_POST['wine']);
        if(!$wine){ 
        $error .= "Wine name is missing<br />"; 
        }
$color = mysql_real_escape_string($_POST['color']);
        if(!$color){ 
        $error .= "Color is missing<br />"; 
        }
$grapetype = mysql_real_escape_string($_POST['grapetype']);
        if(!$grapetype){ 
        $error .= "Type of grape is missing<br />"; 
        }
$year = mysql_real_escape_string($_POST['year']);
        if(!$year){ 
        $error .= "Year of wine is missing<br />"; 
        }
$alc = mysql_real_escape_string($_POST['alc']);
        if(!$alc){ 
        $error .= 'Alcohol content is missing<br />'; 
        }
$comments = mysql_real_escape_string($_POST['comments']);
        if(!$comments){ 
        $error .= 'Comments are required<br />'; 
        }
$again = mysql_real_escape_string($_POST['again']);
        if(!$again){ 
        $error .= 'Buy again Y/N missing<br />'; 
        }

if(!$error){
    $sql="INSERT INTO wines(wine, color, grapetype, year, alc, comments, again) VALUES('$wine', '$color', '$grapetype', '$year', '$alc', '$comments', '$again')";
}
else{
    //display $error however you want e.g....
    echo "<div class=\"error\">$error</div>";
    die('Could not insert record due to this missing data.  <a href="list.php">Click here to return</a>');
}

if (!mysqli_query($link,$sql))
  {
  die('Error: ' . mysqli_error($link));
  }
echo "1 record added";
echo '<br/>';
echo '<a href="list.php">Click here to return</a>';

mysqli_close($link);

?>
<html>
<body>

</body>
</html>

2 个答案:

答案 0 :(得分:0)

在代码顶部的某处尝试$error = '';。您使用$error .=连接到未定义的变量。此外,您不应在mysqlimysql之间进行更改,并坚持使用mysqli。如果你去面向对象的mysqli,它将节省你的时间。

答案 1 :(得分:0)

分配给php的时候你会发一个未定义的变量声明未使用的声明,因为如果没有找到错误,$ error将没有值。你可以随时关闭php代码中的注意事项和错误。

将此代码放在php代码的顶部

error_reporting(E_ALL ^ E_NOTICE);