使用php将数据插入表中
我的html表单如下所示:使用php将数据插入表中,php,mysql,database,Php,Mysql,Database,我的html表单如下所示: <html> <body> <form action="createconnection.php" method="post"> Firstname : <input type="text", name="fname"> </br> Lastname : <input type="test" name="lname"> </br> Age : <input type="text
<html>
<body>
<form action="createconnection.php" method="post">
Firstname : <input type="text", name="fname"> </br>
Lastname : <input type="test" name="lname"> </br>
Age : <input type="text" name="age"></br>
<input type="submit">
</form>
</body>
</html>
名字:
姓氏:
年龄:
和php文件:
表名和数据库名都很好
<?php
// Create connection
$con=mysqli_connect('127.0.0.1:3306' ,'root','root','my_db');
echo "hi";
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO table1 (Fname, LName, Age)
VALUES
('$_POST[fname]','$_POST[lname]','$_POST[age]')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
mysqli_close($con);
?>
您应该像这样修改sql(变量应该连接起来)
下面是一个非常简单的代码示例,其中包含准备好的语句
注意查询上的询问符号和bind_参数
,s
表示字符串,i
表示整数
因此ssi
意味着我们将收到2个字符串和1个整数条目
<?php
// Your database info
$db_host = '';
$db_user = '';
$db_pass = '';
$db_name = '';
if (!empty($_POST))
{
$con = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if ($con->connect_error)
die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
$sql = "INSERT INTO table1 (Fname, LName, Age) VALUES (?,?,?)";
if (!$stmt = $con->prepare($sql))
die('Query failed: (' . $con->errno . ') ' . $con->error);
if (!$stmt->bind_param('ssi',$_POST['fname'],$_POST['lname'],$_POST['age']))
die('Bind Param failed: (' . $con->errno . ') ' . $con->error);
if (!$stmt->execute())
die('Insert Error ' . $con->error);
echo "Record added";
$stmt->close();
$con->close();
}
?>
<html>
<body>
<form action="createconnection.php" method="post">
Firstname : <input type="text", name="fname"> </br>
Lastname : <input type="test" name="lname"> </br>
Age : <input type="text" name="age"></br>
<input type="submit">
</form>
</body>
</html>
你真的应该通读:)你正在使用mysqli
,这很好,但是为什么不使用准备好的语句呢?除了sql注入之外,你应该在你的$\u POST
字符串语句中的$\sql
是LName还是LName?使用echo或print打印查询,然后从浏览器复制打印的查询,并使用phpmyadmin或any在mysql中进行检查。是否有任何原因导致否决?我没有否决,但请在$\u帖子中编辑以获得单引号。嗯,如果我不得不否决你,我会说,这是因为1)你没有做任何与在问题中所做的不同的事情,2)你没有使用事先准备好的陈述,因为他在使用mysqli@Prix导致真正错误的问题中缺少连接。我同意我们可以做很多改进,但这不是当前的问题。@harrybvp他不需要连接,因为他使用双引号而不是单引号为他的变量+1加引号,表示某人确实花时间显示准备好的语句,而不是告诉他们准备语句。感谢Prix的努力,但这会重定向到createConnection.php,并导致connect_error)死亡('connect error('.mysqli_connect_errno())。mysqli_connect_error())$stmt=$con->prepare(“插入表1(Fname,LName,Age)值(?,?)”$stmt->bind_param('ssi'、$_POST['fname']、$_POST['lname']、$_POST['age']);如果(!$stmt->execute())死亡('Insert Error'.$con->Error);echo“添加1条记录”$stmt->close()$con->close();}?>浏览器出错@编程疯狂你能更具体地描述一下你是如何使用这段代码的吗?你能复制并粘贴准确的错误吗?@SableFoste谢谢,OP使用mysqli而不是mysql的事实让我很高兴能帮助他。我的意思是50%甚至更多,尽管所有的警告和一切都很糟糕,还是继续使用mysql吧。@Programming\u疯狂你确定文件是正确的,并且像http://yoursite.com/createconnection.php
?在我看来,这是将文件内容打印到浏览器,而不是错误消息
<?php
// Your database info
$db_host = '';
$db_user = '';
$db_pass = '';
$db_name = '';
if (!empty($_POST))
{
$con = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if ($con->connect_error)
die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
$sql = "INSERT INTO table1 (Fname, LName, Age) VALUES (?,?,?)";
if (!$stmt = $con->prepare($sql))
die('Query failed: (' . $con->errno . ') ' . $con->error);
if (!$stmt->bind_param('ssi',$_POST['fname'],$_POST['lname'],$_POST['age']))
die('Bind Param failed: (' . $con->errno . ') ' . $con->error);
if (!$stmt->execute())
die('Insert Error ' . $con->error);
echo "Record added";
$stmt->close();
$con->close();
}
?>
<html>
<body>
<form action="createconnection.php" method="post">
Firstname : <input type="text", name="fname"> </br>
Lastname : <input type="test" name="lname"> </br>
Age : <input type="text" name="age"></br>
<input type="submit">
</form>
</body>
</html>
CREATE TABLE IF NOT EXISTS `table1` (
`Fname` varchar(50) NOT NULL,
`LName` varchar(50) NOT NULL,
`Age` int(3) NOT NULL
);