初学 PHP ,请问如何解决 Undefined variable 和 mysqli_error() expects parameter 1 错误

2019-07-09 01:00:42 +08:00
 githere

本地环境: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);  
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());

}



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 的配置

https://i.ibb.co/bdHsq9R/2019-07-09-12-43-43.png

如何解决这 2 个错误:

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

Warning: mysqli_error() expects parameter 1 to be mysqli, string given in /Applications/XAMPP/xamppfiles/htdocs/simpleform/demo.php on line 40 error:

1508 次点击
所在节点    问与答
7 条回复
jellybool
2019-07-09 01:37:14 +08:00
1.把 DB_Name 都改成 DB_NAME
2.把 die('error:'.mysqli_error()); 改为 die('error:'.mysqli_error($link));

试试。
2033009565
2019-07-09 09:05:28 +08:00
$sql = "INSERT INTO demo(input1) VALUES ('$value')";
变成$sql = "INSERT INTO demo(input1) VALUES ('.$value.')";
githere
2019-07-09 15:31:23 +08:00
@jellybool @2033009565 按照 2 位老铁给的提示,全部修改了,现在数据库中可以插入数据了,刷新 demo 表,进入 input1 field,可以看到写入到字段 input1 中的数据,但是还是有 2 个错误:


Notice: Undefined variable: value in /Applications/XAMPP/xamppfiles/htdocs/simpleform/demo.php on line 36
error:Duplicate entry '0-..' for key 'PRIMARY'

目前 36 行的代码是: $sql = "INSERT INTO demo(input1) VALUES ('.$value.')";
githere
2019-07-09 16:45:47 +08:00
@2033009565 照你提供的这个方法操作,input1 这个 field 里面的数据前后都有 .2 个小圆点.
2033009565
2019-07-10 08:50:29 +08:00
主键是唯一的
2033009565
2019-07-10 08:51:43 +08:00
你的 demo.php 的第 36 行有错误,变量没定义
2033009565
2019-07-10 09:14:14 +08:00
把你的主键设置为自动递增,那两个小原点可以去掉

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/581174

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX