gpt4 book ai didi

php没有将数据写入数据库

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:06 33 4
gpt4 key购买 nike

我写了一个 html 文件,它会请求用户提供一些信息并将其发送到另一个 php 文件。 php 文件将建立与数据库的连接并将值插入数据库。
My database name = testdb
table name = table1
我通过调用警报消息对两个文件进行了一些测试,警报消息能够显示在 html 文件中,看起来像来自html文件的请求无法发送到php文件,因此无法执行向数据库插入数据的代码

我的Html 表单如下所示

<form id="firstPrize" method="POST" action="firstPrize.php">

<label> Number 1</label>
<input type="text" name="num1"><br>
<label> Number 2</label>
<input type="text" name="num2"><br>
<label> Number 3</label>
<input type="text" name="num3"><br>
<label> Number 4</label>
<input type="text" name="num4"><br><br><Br>
<input type="button" value="enter" name="btnSubmit" onclick="show()">

</form>

firstPrize.php 示例代码

 <?php

$host = "localhost";
$user = "root";
$password = "";
mysql_connect($host,$user,$password);
mysql_select_db("testdb") or die(mysql_error());
Session_Start();
echo("yeah");
if(isset($_POST["btnSubmit"]))
{
$num1 = $_POST["num1"];
$num2 = $_POST["num2"];
$num3 = $_POST["num3"];
$num4 = $_POST["num4"];

mysql_query("insert into table1(num1,num2,num3,num4) values ('num1','num2','num3','num4')");
?>

最佳答案

首先,您的查询会产生 SQL 注入(inject)。使用 Mysqli 预处理语句:

    $servername = "localhost";
$username = "root";
$password = "";
$dbname = "testdb";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

if(isset($_POST["btnSubmit"]))
{
$num1 = $_POST["num1"];
$num2 = $_POST["num2"];
$num3 = $_POST["num3"];
$num4 = $_POST["num4"];

// prepare and bind
$query = $conn->prepare("INSERT INTO table1 (num1, num2, num3, num4) VALUES (?, ?, ?, ?)");
$stmt->bind_param("ssss", $num1, $num2, $num3, $num4);
}

此函数将参数绑定(bind)到 SQL 查询并告诉数据库参数是什么。 “ssss”参数列出参数的数据类型。 s 字符告诉 mysql 该参数是一个字符串。

参数可以是四种类型之一:

i - integer
d - double
s - string

其次,您的 if 语句缺少右括号 }

第三,您的变量 $num1 从未被使用过。您使用了 num1num2,但是您错过了 '$'

关于php没有将数据写入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38770799/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com