gpt4 book ai didi

php - 插入查询不做任何事情

转载 作者:行者123 更新时间:2023-12-01 00:41:46 24 4
gpt4 key购买 nike

正如标题所示,我正在尝试创建一个 mysqli 插入查询以将数据从表单插入到表中。表结构分为 4 列,如下所示:

1) PO(自增int主键)

2)工作名称(VARCHAR)

3)日期(VARCHAR)

4)地址(VARCHAR)

使用当前代码,我在提交时没有收到任何错误,而是没有任何结果。我很困惑这其中的哪一部分不起作用,并且正在寻找对它的一些见解。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<?php
require 'classes/Mysql.php';
$conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or die('There was a problem connecting to the database');


if($_POST && !empty($jobname) && !empty($date)){
$jobname = $_POST['jobname'];
$date = $_POST['date'];
$address = $_POST['address'];
$query = "INSERT INTO 'po_10152796'('Job Name', 'Date', 'Address') VALUES ('$jobname',' $date',' $address')";
mysqli_query($conn,$query);

}

?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>New Job - Tradeflow</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />

</head>

<body>
<h2>Your PO will be provided when the form is completed, fields marked with an asterix (*) are required and must be filled out in order to submit.</h2>
<form id="newJobForm" method="post" class="form-newJob" role="form" action="">
<div class = "relative">
<label>Job Name: </label>
<input class="blueinput" name="jobname" input type="text" placeholder="Job Name"/>
</div>
<div class="relative">
<label>Date: </label>
<input class="blueinput" name="date" input type="datetime" placeholder="" />
</div>
<div class="relative">
<label>Address: </label>
<input class="blueinput" name="address" input type="text" placeholder="Address" />
</div>
<input type="submit" class="bluebutton" aligh="left" value="Submit" />



</body>
</html>

最佳答案

您检查提交表单的 if 条件是错误的。您的 if 条件将返回错误。试试这个:

if(!empty($_POST["jobname"]) && !empty($_POST["date"])){

对于您的查询,不要对表名和列名使用单引号 ('),而应使用反引号 (`)。

"INSERT INTO `po_10152796` (`Job Name`, `Date`, `Address`) VALUES ('$jobname',' $date',' $address')";

注意:请不要在列名称中使用空格。

您的查询也容易出现 SQL injections , 所以我建议至少使用 mysqli_real_escape_string() 函数。

$jobname = mysqli_real_escape_string($conn,$_POST["jobname"]);

为了更好的安全性,请使用 mysqli_* 准备语句或 PDO。下面是一个 mysqli_* 准备语句的例子:

if($stmt = $conn->prepare("INSERT INTO po_10152796 (Job_Name, Date, Address) VALUES(?,?,?)")){
$stmt->bind_param("sss",$_POST["jobname"],$_POST["date"],$_POST["address"]);
$stmt->execute();
$stmt->close();
}

关于php - 插入查询不做任何事情,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30588330/

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