虽然我理解php的基础,但我对php很新。大部分都是至少。
我的php脚本有2个问题。
一: 即使我输入文本框内的信息,它总是将我引导到?insert = empty我不知道为什么它总是告诉我其中一个框是空的,即使它不是。是输入类型=“日期”?。
二: 我尝试删除if(empty)方法,留下mysqli查询。虽然没有数据插入数据库,但它工作得很好。
PHP
session_start();
if (isset($_POST['submit'])) {
include 'includes/dbh.inc.php';
$id = $_GET['id'];
$c_id = $_REQUEST['u_uid'];
$e_name = mysqli_real_escape_string($conn, $_POST['e_name']) ;
$d_event = mysqli_real_escape_string($conn, $_POST['d_event']) ;
$t_event = mysqli_real_escape_string($conn, $_POST['t_event']) ;
$e_t_event = mysqli_real_escape_string($conn, $_POST['e_t_event']) ;
$theme = mysqli_real_escape_string($conn, $_POST['theme']) ;
$date = date('Y-m-d H:i:s');
if (empty($e_name) || empty($d_event) || empty($t_event) || empty($e_t_event) || empty($theme)){
header("Location: ../package.all.php?insert=empty");
exit();
}else{
$sql = "INSERT INTO event_table (event_name, event_date, event_time_start, event_time_end, cusact_id, theme, reserve_date_time, package_id) VALUES ('$e_name', '$d_event', '$t_event', '$e_t_event', '$theme', '$date', '$id');";
mysqli_query($conn, $sql);
header("Location: ../package.all.php?insert=success");
}
}
else {
echo 'isset was false';
header("Location: ../inquire-packages.inc.php?insert=failed");
}
HTML
<form action="includes/inquire-packages.inc.php" method="POST">
<label>Event Name</label>
<input type="text" name="e_name" placeholder="Enter Event Name*"/>
<label for="job">Day of the Event</label>
<input type="date" name="d_event" placeholder="Enter Date of Event*"/>
<label for="job">Time of the Event</label>
<input type="Time" name="t_event" placeholder="Enter Time of Event*"/>
<label for="job">End Time of the Event</label>
<input type="Time" name="e_t_event" placeholder="Enter End Time of Event*"/>
<label>Theme</label>
<input type="text" name="theme" placeholder="Enter Theme*"/>
<input name="submit" type="submit" value="Submit"/>
</form>
如果这是一个愚蠢的问题,我很抱歉,但我真的想学习PHP代码。
谢谢你, 奥马
答案 0 :(得分:4)
第一名:count
列与value
count
不匹配。您的列数为8
,但值为7
。所以你错过了一个值。尝试调试它。
第二名:我猜你错过了$c_id
。
3rd:尝试使用预准备语句以避免sql注入。
第4代: Header()
函数不会终止代码执行。所以在标题函数之后使用exit()
。
第5名:添加错误处理程序mysqli_query($conn, $sql) or die(mysqli_error($conn));
6th:从哪里获得这两个值$id = $_GET['id'];$c_id = $_REQUEST['u_uid'];
PHP:
$sql = "INSERT INTO event_table (event_name,
event_date,
event_time_start,
event_time_end,
cusact_id,
theme,
reserve_date_time,
package_id)
VALUES ('$e_name',
'$d_event',
'$t_event',
'$e_t_event',
'$c_id',
'$theme',
'$date',
'$id');";
mysqli_query($conn, $sql) or die(mysqli_error($conn));
答案 1 :(得分:0)
检查mysqli_real_escape_string
的{{3}},我发现如果连接未打开,输出将为空字符串,因此请尝试检查连接是否已打开:
if (mysqli_connect_errno()) {
printf("%s\n", mysqli_connect_error());
exit();
}