初学php,请问如何解决 Undefined variable这个错误?

本地环境:macos+xampp+php7


创建了 2 个文件 demo.php and demo-form.php ,放在 xampp/htdocs/simpleform 目录下

demo.php 的代码为:

<?php
/**
 * Created by PhpStorm.
 * User: sulayman
 * Date: 2019/7/8
 * Time: 8:37 PM
 */

define('DB_NAME', 'form1');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
$link = mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD);
mysql_query("set names 'utf8'");
if(!$link){

    die('could not connect:'.mysqli_error($link));

}

$db_selected = mysqli_select_db($link, DB_NAME);
if(!$db_selected){

    die('cannot use'.DB_NAME.':'.mysqli_error($link));
}
//echo "you conneted the database successfully";
//
//
//
  // $value = $_POST["input1"];

if (isset($_POST['input1'])) {
    $value = $_POST['input1'];
}


$sql = "INSERT INTO demo(input1) VALUES ('.$value.')";

  
if (!mysqli_query($link,$sql)){  
die('error:'.mysqli_error($link));

}




mysqli_close($link);


demo-form.php 的代码为:

<form action = "demo.php" method = "post" >

    <p> Input 1:</p> <input type="text" name="input1"> 
    <input type="submit" value="submit">
    


</form>

phpmyadmin 的配置

2019-07-09-12-43-43.png

如何解决这个错误:

Notice: Undefined variable: value in /Applications/XAMPP/xamppfiles/htdocs/simpleform/demo.php on line 37

37行的代码为:
$sql = "INSERT INTO demo(input1) VALUES ('$value')";

阅读 406
评论 更新于 7月10日
    5 个回答
    if (isset($_POST['input1'])) {
        $value = $_POST['input1'];
    }

    你这里声明了,当 POST 的 input1 有值时,才给 $value 赋值,但是你有没有考虑当 input1 没有的情况下呢?
    很显然,你这里继续执行了下面的代码,当下面需要用单 $value 才发现,并不存在这个变量。

    评论 赞赏 7月9日

      一般情况下使用如下方法来避免Undefined variable

      if(isset($varable)){
        echo '变量存在';
      }else{
        echo '变量不存在';
      }

      php7情况下也使用如下语法糖来避免Undefined variable

      if($varable??false){
        echo '变量存在';
      }else{
        echo '变量不存在';
      }
      评论 赞赏 7月12日
        宇润
        • 670

        没有考虑isset()为false的情况

        评论 赞赏 7月9日
          hxd_
          • 1.5k

          报错是 未定义的变量名 $value 记住原则:**先声明在调用**,你的$values 在 if 条件成立时才被声明,不成立的时候当然是没有声明了,所以会报错

          评论 赞赏 7月9日

            php7啊,
            $value = $_POST["input1"] ?? '';

            评论 赞赏 7月9日
              撰写回答

              登录后参与交流、获取后续更新提醒