mysqli_query不能在If语句中工作
我正要解决这个问题。我的代码中的一行似乎正在起作用。它返回与其他人似乎并不想运行它。它没有错误,但它不会将其移动到数据库。正如标题所说,这是一个if语句中的mysqli_query。这里是代码,我已经把箭头放在错误似的地方。mysqli_query不能在If语句中工作
$t_name = $_POST['topic_name'];
$content = $_POST['con'];
$date = date("y-m-d");
if(isset($_POST['submit'])) {
if($t_name && $content) {
if(strlen($t_name) >= 10 && strlen($t_name) <= 70) {
//vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
if($query = mysqli_query($connect, "INSERT INTO topics('topic_id', 'topic_name', 'topic_content', 'topic_creator', 'date') VALUES ('', '".$t_name."', '".$content."', '".$_SESSION["username"]."', '".$date."')")) {
echo "<font color = 'green'>Topic posted!</font>";
} else {
echo "<font color='red'>Unknown failure, time to panic!</font>";
}
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
} else {
echo "<font color='red'>Topic name must be between 10 and 70 characters long!</font>";
}
} else {
echo "<font color='red'>All fields must be filled out!</font>";
}
}
} else {
include('header.php');
echo "You must be logged in to access this page. Click <a href='login.php'>here</a> to login.";
}
include('footer.php');
是的,我知道SQL注入和其他事情的危险,一旦我有我的代码关闭,我会处理它。
您的topic_id
不能设置为空。而是删除topic_id
或给它一个default
值。
此外,就像@HizerCache提到的那样,您可以使用MySQL函数NOW()
插入当前时间。
事情是这样的:
"INSERT INTO topics(topic_id, topic_name, topic_content, topic_creator, date) VALUES (default, '".$t_name."', '".$content."', '".$_SESSION["username"]."', NOW())"
此外,使用mysqli_error()
调试错误。
if($query = mysqli_query($connect, "INSERT INTO topics('topic_id', 'topic_name', 'topic_content', 'topic_creator', 'date') VALUES ('', '".$t_name."', '".$content."', '".$_SESSION["username"]."', '".$date."')")) {
echo "<font color = 'green'>Topic posted!</font>";
} else {
echo "Error : " . mysqli_error($connect);
}
在服务器上,我将topic_ID设置为自动增量。这应该不够吗? – SkrillexNukehulk
是的,'default'将起作用。或者你可以把它作为@ObjectManipulator提到 – user3284463
@SkrillexNukehulk通过传递'''',它告诉MySQL插入一个空字符串,它不能。使用'default'并将'topic_id'分配到其默认值 – user3284463
请删除引号每列名:“topic_id”,“TOPIC_NAME” ....“日期”
$query = mysqli_query($connect, "INSERT INTO topics(topic_id, topic_name, topic_content, topic_creator, date) VALUES ('', '".$t_name."', '".$content."', '".$_SESSION["username"]."', '".$date."')")
为了了解你的错误,我建议您调试查询。尝试使用mysqli_error()函数。
if (...) {
} else {
die(mysqli_error($connect)); // Add this
}
您是否尝试从插入中删除主题ID列? –
哦,离开mysql处理日期!使用“now()”功能! https://dev.mysql.com/doc/refman/5.5/zh-CN/date-and-time-functions.html#function_now –
@HizerCache从来不知道,谢谢! – SkrillexNukehulk