mysql - 在sql中将值一一添加到表中

标签 mysql

我想在检查它是否有效且不为空后一一插入值,提交后,我想显示一条消息确认我的注册已创建,但它给我错误:插入订阅者(评论,reg_date ) 值 (",CURRENT_TIME()) 。

创建表订阅者

"CREATE TABLE subscribers (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
name VARCHAR(30) NOT NULL,
lastname VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
comment VARCHAR(50) NOT NULL,
gender VARCHAR(50) NOT NULL,
reg_date TIMESTAMP
)";

将数据插入MySQL表

if(!empty($_POST["name"]) && preg_match("/^[a-zA-Z ]*$/",$name)) {
$sql = "INSERT INTO subscribers (name)
VALUES ('".$_POST["name"]."')";   
}
if(!empty($_POST["lastname"]) && preg_match("/^[a-zA-Z ]*$/",$name)) {
$sql = "INSERT INTO subscribers (lastname)
VALUES ('".$_POST["lastname"]."')";   
}
if(!empty($_POST["email"]) && filter_var($email, FILTER_VALIDATE_EMAIL)) {
$sql = "INSERT INTO subscribers (email)
VALUES ('".$_POST["email"]."')";   
}
if(!empty($_POST["gender"])) {
$sql = "INSERT INTO subscribers (gender)
VALUES ('".$_POST["gender"]."')";   
}

$sql = "INSERT INTO subscribers (comment,reg_date)
VALUES ('".$_POST["comment"]."',CURRENT_TIME())";

if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
    }

最佳答案

您需要编写一个插入所有列的查询,而不是为每个列编写单独的查询。并且您应该使用准备好的语句而不是连接变量。

输入验证应该报告错误,而不是分配查询。

if(!preg_match("/^[a-zA-Z ]+$/",$_POST['name'])) {
    die("Invalid name"); 
}
if(!preg_match("/^[a-zA-Z ]*$/",$_POST['lastname'])) {
    die("Invalid last name");  
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    die("Invalid email");
}
if(empty($_POST["gender"])) {
    die("Empty gender"); 
}

$sql = "
    INSERT INTO subscribers (name, lastname, email, gender, comment, reg_date) 
    VALUES(?, ?, ?, ?, ?, CURRENT_TIME())";
$stmt = $conn->prepare($sql) or die("Error: " . $sql . "<br>" . $conn->error);
$stmt->bind_param("sssss", $_POST['name'], $_POST['lastname'], $_POST['email'], $_POST['gender'], $_POST['comment']);

if ($stmt->execute()) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $stmt->error;
}

关于mysql - 在sql中将值一一添加到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55270883/

相关文章:

MYSQL 当条件的第一部分有效时选择行(使用分组依据)

python mysql 无法捕获异常

mysql - 将 Sleep 添加到 mySQL 删除查询

mysql - 使用一个 MySQL 查询从两个表中获取数据?

PHP/MySQL 文本到数据库表 - 查询命中但文本为空

php - 使用数组选择多行,然后插入到另一个语句

mysql - 重新为MySQL用户分配主机访问权限

PHP 中的 PHPMyAdmin 查询错误 #1064

mysql - MySQL 查询数百万条记录速度缓慢

php - Paypal IPN 监听器不发送 mysql 插入语句