使用mysqli连接数据并将数据插入数据库

时间:2015-05-28 06:47:22

标签: php

我一直在关注如何连接数据库的一些视频和其他来源。我刚接触编程,我无法看到我的连接出错了。加热我的表单上的提交按钮后,数据似乎已发送到数据库,但在我的数据库刷新后,没有找到任何内容。非常感谢您的帮助。

这是我的数据库连接代码。

 <?php
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name  = 'student_registration';
$mysqli = new mysqli ($db_host, $db_user, $db_pass, $db_name);
if ($mysqli -> connect_errno){
    printf ("connect failed: %s/n", $mysqli -> connect_error);
    }
    else printf ("connected to database");

?>

这是我的插入代码。

<?php
require_once("opendb.php");

if (isset($_POST['submit'])){   

$department = $_POST['department'];
$post = $_POST['post'];
$description = $_POST['description'];
$responsibility = $_POST['responsibility'];
$requirement = $_POST['requirement'];
$date=@"$_POST[year]"."-".@"$_POST[month]"."-".@"$_POST[day]";

$query = "INSERT INTO posts VALUES('".$department."','".$post."','".$description."','".$responsibility."','".$requirement."','".$date."')";

$inset = mysqli_query($mysqli, $query );
if($inset){

          } 
?>
<script language="javascript">
alert("New Post Updated");
window.location="addpost.php";
</script>

<?php
} else{
 ?>
<script language="javascript">
alert("Post Updated did not update successfully Please try again");
window.location="addpost.php";
</script> 
 <?php 
 }
 ?>  

if($ insert)上的结束大括号是包装isset函数。删除它会将变量$ department,$ post等呈现为Unidentified variables。

2 个答案:

答案 0 :(得分:0)

请为mysql数据库设置PASSWORD,然后检查。 没有密码,mysql运行良好,

但是mysqli不能使用空白密码。

示例:

对我来说,因为我正在使用lampp

/ opt / lampp / bin / mysqladmin -uroot password'xyz'

答案 1 :(得分:0)

问题#1:错误的SQL语句
您需要通过在数据库中列出相应的列名称然后匹配变量名称的顺序来指定要将其添加到哪个列。 如果您的列名是:
$department已插入部门栏中 $post插入帖子栏中

更正代码:(将列名更改为相应的列名)

 $query = "INSERT INTO posts (department, post, description, responsiblity, requirement, date) VALUES ('$department','$post','$description','$responsibility','$requirement','$date')";

注意:对于SQL statment中的变量名称,单引号就足够了

问题#2: $ date语法不正确
不正确:

 $date=@"$_POST[year]"."-".@"$_POST[month]"."-".@"$_POST[day]";

年,月,日之间没有报价。你需要一个围绕它们的报价。将每个POST分配给变量并使用变量如果您只是尝试获取日期,请使用date()函数

问题#3:主要安全问题
在没有任何过滤的情况下使用mysqli_query就像是说HACK MY SERVER! 您的数据库可以轻松SQL Injected
使用这样的直接查询总体上是不安全的!请使用PHP prepared statements,特别是如果这是您计划发布的学生注册表。