显示错误,未更新数据库中的值

时间:2018-10-27 09:56:14

标签: php

我制作了一个包含名字和姓氏两个字段的表单,但是当我运行下面的代码时,它显示了错误的未定义变量,并且值未插入数据库中。

<?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";
}
?>

5 个答案:

答案 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