我制作了一个包含名字和姓氏两个字段的表单,但是当我运行下面的代码时,它显示了错误的未定义变量,并且值未插入数据库中。
<?php
$servername = "localhost";
$username="root";
$password="";
$dbname="myfd";
$conn=mysqli_connect($servername,$username,$password,$dbname);
if($conn->connect_error){
echo "error";
}
else{
echo "successfull";
}
if(isset($_POST["submit"])){
$fname=$_POST["firstname"];
$lname=$_POST["lastname"];
$myfd_query="INSERT INTO 'logi'('$fname','$lname')
VALUES('$fname','$lname')";
}
try {
$myfd_result = mysqli_query($conn, $myfd_query);
if ($myfd_result) {
echo "successfull";
} else {
echo "error";
}
}
catch (Exception $exception){
echo "error";
}
?>
答案 0 :(得分:0)
变量名输入错误。请更新变量名。
插入查询语法:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
答案 1 :(得分:0)
在您的查询中尝试
$myfd_query="INSERT INTO `logi`(`firstname`,`lastname`)
VALUES('".$fname."','".$lname."')";
答案 2 :(得分:0)
尝试一下。
<?php
$servername = "localhost";
$username="root";
$password="";
$dbname="myfd";
$conn=mysqli_connect($servername,$username,$password,$dbname);
if($conn->connect_error){
echo "error";
}
else{
echo "successfull";
}
if(isset($_POST["submit"])){
$fname=$_POST["firstname"];
$lname=$_POST["lastname"];
$myfd_query="INSERT INTO 'logi'('$fname','$lname')
VALUES('$fname','$lname')";
try {
$myfd_result = mysqli_query($conn, $myfd_query);
if ($myfd_result) {
echo "successfull";
} else {
echo "error";
}
}
catch (Exception $exception){
echo "error";
}
}
?>
答案 3 :(得分:0)
这是因为此变量$ myfd_query的作用域仅在if块内部。尝试在外部声明该查询或尝试在相同范围内使用它。也可以尝试一下:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myfd";
$conn = mysqli_connect($servername, $username, $password, $dbname);
if ($conn->connect_error) {
echo "error";
} else {
echo "successfull";
}
$myfd_query = "";
if (isset($_POST["submit"])) {
$fname = $_POST["firstname"];
$lname = $_POST["lastname"];
$myfd_query = "INSERT INTO 'logi'('$fname','$lname')
VALUES('$fname','$lname')";
}
try {
$myfd_result = mysqli_query($conn, $myfd_query);
if ($myfd_result) {
echo "successfull";
} else {
echo "error";
}
} catch (Exception $exception) {
echo "error";
}
?>
答案 4 :(得分:0)
请,请,请始终格式化您的代码。即使对于该代码的作者,理解起来也要容易得多。
<?php
$servername = "localhost";
$username="root";
$password="";
$dbname="myfd";
$conn=mysqli_connect($servername,$username,$password,$dbname);
if($conn->connect_error){
echo "error";
} else{
echo "successfull";
}
if(isset($_POST["submit"])){
$fname=$_POST["firstname"];
$lname=$_POST["lastname"];
$myfd_query="INSERT INTO 'logi'('$fname','$lname') VALUES('$fname','$lname')";
}
try {
$myfd_result = mysqli_query($conn, $myfd_query);
if ($myfd_result) {
echo "successfull";
} else {
echo "error";
}
} catch (Exception $exception){
echo "error";
}
好,我们开始吧。
问题1。如果发生连接错误,脚本将显示error
文本并继续执行。
问题2。看起来,您仅在isset($_POST["submit"])
时设置变量,但始终执行查询。
问题3.您的查询错误。代替
$myfd_query="INSERT INTO 'logi'('$fname','$lname') VALUES('$fname','$lname')";
应该类似于:$myfd_query="INSERT INTO 'logi'(firstname,lastname) VALUES('$fname','$lname')";
,但是(我不知道您的 logi 表中字段的确切名称)
问题4.不要用'或'符号引用表名,某些mysql配置不接受用引号引起来的表名。最好使用反引号:`
问题5.最好使用占位符,而不是将变量放在字符串中。这是SQL注入的方式。最好总是练习使用占位符。 请参见示例here