我正在尝试将我的代码从转义字符串设置为准备好的语句。我收到一条错误消息,提示“名称”列不能为空。 “名称”列应来自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);
?>
答案 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');
}
其他检查:检查您的表单是否具有名称字段并且名称正确。