准备好的语句将列设置为null

时间:2020-02-21 12:44:58

标签: php sql

我正在尝试将我的代码从转义字符串设置为准备好的语句。我收到一条错误消息,提示“名称”列不能为空。 “名称”列应来自post方法。我不确定使用问号是否是个好方法,但这就是他们在不同页面上写的。

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

我的插入代码:

<?php
session_start();
$link = mysqli_connect("localhost", "root", "", "reg");

// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}


// Prepare an insert statement
$sql = "INSERT INTO cards (name, phone, phone2, email, zipcode, address, job, description, userid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";

if($stmt = mysqli_prepare($link, $sql)){
    // Bind variables to the prepared statement as parameters
    mysqli_stmt_bind_param($stmt, "ssssisssi", $name, $phone, $phone2, $email, $zipcode, $address, $job, $description, $userid);

    if(isset($_POST['name'])){
        $name = $_POST['name'];
    }
    if(isset($_POST['phone'])){
        $phone = $_POST['phone'];
    }
    if(isset($_POST['phone2'])){
        $phone2 = $_POST['phone2'];
    }
    if(isset($_POST['email'])){
        $email = $_POST['email'];
    }
    if(isset($_POST['zipcode'])){
        $zipcode = $_POST['zipcode'];
    }
    if(isset($_POST['address'])){
        $address = $_POST['address'];
    }
    if(isset($_POST['job'])){
        $job = $_POST['job'];
    }
    if(isset($_POST['description'])){
        $description = $_POST['description'];
    }
    if(isset($_SESSION['id'])){
        $userid = $_SESSION['id'];
    }


    // Attempt to execute the prepared statement
    if(mysqli_stmt_execute($stmt)){
        echo "Records inserted successfully.";
    } else{
        echo "ERROR: Could not execute query: $sql. " . mysqli_error($link);
    }
} else{
    echo "ERROR: Could not prepare query: $sql. " . mysqli_error($link);
}

// Close statement
mysqli_stmt_close($stmt);

// Close connection
mysqli_close($link);
?>

1 个答案:

答案 0 :(得分:0)

如果您要检查POST参数是否已设置,即if(isset($_ ...,请提供else语句。

if(isset($_POST['name'])){
    $name = $_POST['name'];
} else {
    $name = 'No name was provided';
}

如果名称很重要且必须提供:您可以在执行之前将其放在查询的顶部,如果没有提供,则退出结果

if(isset($_POST['name'])){
    $name = $_POST['name'];
} else {
    die('Name has to be provided to proceed');
}

其他检查:检查您的表单是否具有名称字段并且名称正确。

相关问题