在用户单击提交按钮后,我正在尝试从模态插入数据。但它不起作用,我有两个文件索引来显示模态,PHP文件来运行connectMySQL并将数据插入其中。我认为它不识别提交操作。我也有一个问题,我该如何将主键id插入数据库,还是它自动添加。
HTML提交代码:
<button type="submit" action="add.php"class="btn">Finish!</button>
PHP代码:
<?php
include 'db.php';
$cName = $_POST['form-name'];
$ser = $_POST['form-s-name'];
$link = $_POST['form-t'];
$info = $_POST['form-des'];
$sql = "INSERT INTO crewlist(id, name,sname,linkname,description)
VALUES ('','".$cName."','".$ser."','".$link."','".$info."')";
mysqli_query($conn,$sql);
if(mysqli_affected_rows($conn) > 0){
echo "<p>Added</p>";
实现这一点的教科书方法是使用准备好的语句:
$stmt = mysqli_prepare($conn,
"INSERT INTO crewlist(name,sname,linkname,description) VALUES (?,?,?,?)"
);
mysqli_stmt_bind_param($stmt, 'ssss',
$_POST['form-name'],
$_POST['form-s-name'],
$_POST['form-t'],
$_POST['form-des']
);
$result = mysqli_stmt_execute($stmt);
如果您正确地使用了准备好的语句,就可以保证您的值是用正确的转义插入的。在这里,我使用了s
作为字符串,但文档中列出了其他类型。
如果您犯了错误,您需要为错误启用异常。
如果你正在做大量的数据库工作,我强烈建议你使用类似ORM的Doctrine或Propel,因为它们会让你与记录的接口更加愉快。
如果在sql查询中没有使用变量,应该像这样使用
$sql = "INSERT INTO crewlist(id, name,sname,linkname,description)
VALUES ('','{$cName}','{$ser}','{$link}','{$info}')";
插入与您的列不匹配的查询。使用此选项将起作用:
$sql = "INSERT INTO crewlist(id, name,sname,linkname,description)
VALUES ('',cName,ser,link,info)";
如果你想使用数据,这将在表中插入cName、ser、link和info:
'".$cname."'