将数据添加到mySql

时间:2015-10-22 07:29:56

标签: php mysql

我有一个表单并试图将数据插入mysql数据库。但它总是跳进错误。

相同的数据库连接正常工作,可以查看数据库中已有的数据。

存储在单独文件中的页面的数据库连接:

   <?php 
$host ="localhost";
$user = "CENSORED";
$password = "CENSORED";



$link = mysql_connect($host,$user,$password) or die("An error occurred while connecting...");

//Database Selection
$dbname="CENSORED";
mysql_select_db($dbname);

?>

HTML表单

<form action="add_admin.php" method="post">
    <table>
        <tr>
        <td>Email Address :</td>
        <td><input id="admin_email" name="admin_email" type="text" size="20"</></td>
        </tr>
        <tr>
        <td>Name :</td>
        <td><input id="admin_name" name="admin_name" type="text" size="20"</></td>
        </tr>
        <tr>
        <td>Mobile :</td>
        <td><input id="admin_mobile" name="admin_mobile" type="text" size="12"</></td>
        </tr>
        <tr>
        <td>Address :</td>
        <td><textarea id="admin_address" name="admin_address" rows="4" cols="50"/> </textarea></td>
        </tr>
        <td>Password :</td>
        <td><input id="admin_pw" name="admin_pw" type="text" size="20"</></td>
        </tr>
        <td><input type="reset" value="Reset"></td>
        <td><input type="submit" value="Submit"></td>
        </tr>
    </table>
    </form>

PHP代码

    <?php
$admin_email=$_POST['admin_email'];
$admin_name=$_POST['admin_name'];
$admin_mobile=$_POST['admin_mobile'];
$admin_address=$_POST['admin_address'];
$admin_password=$_POST['admin_password'];

$sql = "INSERT INTO admin (admin_email,admin_name,admin_mobile,admin_address,admin_password) VALUES ('$admin_email','$admin_name','$admin_mobile','$admin_address','$admin_password')";

if( mysql_query($link,$sql))
    {
        echo "Records Added";
    }
    else
    {
        echo "ERROR";
        mysql_error($link);
    }

mysql_close($link);

?>

提前致谢。

6 个答案:

答案 0 :(得分:1)

你必须将你保存的Database connection文件作为单独的文件包含在你的php文件中。

<?php
    include("dbconnection filename.php"):// this line.
    $admin_email=$_POST['admin_email'];
    $admin_name=$_POST['admin_name'];
    $admin_mobile=$_POST['admin_mobile'];
    $admin_address=$_POST['admin_address'];
    $admin_password=$_POST['admin_password'];

    $sql = "INSERT INTO admin (admin_email,admin_name,admin_mobile,admin_address,admin_password) VALUES ('$admin_email','$admin_name','$admin_mobile','$admin_address','$admin_password')";

    if( mysql_query($link,$sql))
        {
            echo "Records Added";
        }
        else
        {
            echo "ERROR";
            mysql_error($link);
        }

    mysql_close($link);

?>

答案 1 :(得分:0)

更改为

$sql = "INSERT INTO admin (admin_email,admin_name,admin_mobile,admin_address,admin_password) VALUES ('".$admin_email."','".$admin_name."','".$admin_mobile."','".$admin_address."','".$admin_password."')";

答案 2 :(得分:0)

使用mysql_real_escape_string

$admin_email=mysql_real_escape_string($_POST['admin_email']);
$admin_name=mysql_real_escape_string($_POST['admin_name']);
$admin_mobile=mysql_real_escape_string($_POST['admin_mobile']);
$admin_address=mysql_real_escape_string($_POST['admin_address']);
$admin_password=mysql_real_escape_string($_POST['admin_password']);

答案 3 :(得分:0)

连接数据库时遇到问题。我不喜欢你连接到数据库的方法,所以我提供了我的方法(到目前为止)。

您的数据库配置应该类似于

require('nameOfFile.php');

$db = new DataBaseClass();
$mysqli=$db->connectToDatabase();
$sql = "INSERT INTO admin (admin_email,admin_name,admin_mobile,admin_address,admin_password) VALUES ('$admin_email','$admin_name','$admin_mobile','$admin_address','$admin_password')";
if($rs = $mysqli->query($sql)) {
    //inserted        
else {
    //not inserted
    $mysqli->close();
}

稍后在其他一些代码中使用此文件

"Unknown"

依此类推,尝试这种方法,看看它是否对你有帮助。

答案 4 :(得分:0)

PHP页面中,您应该包含连接文件:

require_once('yourdbconnection.php');

根据您的$_POST['admin_password']$_POST['admin_pw']更改为HTML

<强> HTML

<form action="add_admin.php" method="post">
  <table>
    <tr>
      <td>Email Address :</td>
      <td><input id="admin_email" name="admin_email" type="text" size="20"></td>
    </tr>
    <tr>
      <td>Name :</td>
      <td><input id="admin_name" name="admin_name" type="text" size="20"></td>
    </tr>
    <tr>
      <td>Mobile :</td>
      <td><input id="admin_mobile" name="admin_mobile" type="text" size="12"></td>
    </tr>
    <tr>
      <td>Address :</td>
      <td><textarea id="admin_address" name="admin_address" rows="4" cols="50"> </textarea></td>
    </tr>
    <td>Password :</td>
      <td><input id="admin_pw" name="admin_pw" type="text" size="20"></td>
    </tr>
      <td><input type="reset" value="Reset"></td>
      <td><input type="submit" value="Submit"></td>
    </tr>
  </table>
</form>

<强> PHP

<?php
require_once('yourdbconnection.php');

$admin_email=$_POST['admin_email'];
$admin_name=$_POST['admin_name'];
$admin_mobile=$_POST['admin_mobile'];
$admin_address=$_POST['admin_address'];
$admin_password=$_POST['admin_pw'];

$sql = "INSERT INTO admin (admin_email,admin_name,admin_mobile,admin_address,admin_password) VALUES ('$admin_email','$admin_name','$admin_mobile','$admin_address','$admin_password')";

mysqli_query($link, $sql) or die("Error: " . mysqli_error($link));
mysqli_close($link);
?>

这对我有用。如果它不适合你,那么:

  • 检查查询列是否与表列匹配
  • 检查您是否使用了正确的数据库和正确的表格
  • 检查您是否在正确的数据库和右表中检查结果

希望这有帮助!

修改 注意:我强烈建议您从mysql切换到mysqli,因为现在不推荐使用mysql。

答案 5 :(得分:0)

当你让我帮助我之前的一个答案时,我决定用这段代码做一些奇特的事情:)

请记住,db行的名称必须与表单name="name"相同才能生效!

db_connect.php:
$dbhost = ""; // this will ususally be 'localhost', but can sometimes differ
$dbname = ""; // the name of the database that you are going to use for this project
$dbuser = ""; // the username that you created, or were given, to access your database
$dbpass = ""; // the password that you created, or were given, to access your database

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('An error occured while connecting to: '. $dbhost.' as: '.$dbuser);
mysql_select_db($dbname, $conn) or die('Sorry, an error occured when selecting the database: '.$dbname);

form.php的:

<form action="add_admin.php" method="post">
    <table>
        <tr>
        <td>Email Address :</td>
        <td><input id="admin_email" name="admin_email" type="text" size="20"</></td>
        </tr>
        <tr>
        <td>Name :</td>
        <td><input id="admin_name" name="admin_name" type="text" size="20"</></td>
        </tr>
        <tr>
        <td>Mobile :</td>
        <td><input id="admin_mobile" name="admin_mobile" type="text" size="12"</></td>
        </tr>
        <tr>
        <td>Address :</td>
        <td><textarea id="admin_address" name="admin_address" rows="4" cols="50"/> </textarea></td>
        </tr>
        <td>Password :</td>
        <td><input id="admin_pw" name="admin_pw" type="text" size="20"</></td>
        </tr>
        <td><input type="reset" value="Reset"></td>
        <td><input type="submit" value="Submit"></td>
        </tr>
    </table>
    </form>

add_admin.php:

include 'db_connect.php'; //include connection


//Why add all post thingys when you can do it dynamically ?
$i = count($_POST);
$e = 0;


//Do a foreach loop on all POSTS coming in to this file.. 
foreach($_POST as $Key => $Value){


  //Add commas behind everything :)
  if($e++ < $i - 1){

      //Escaping all the strings:
      $Rows .= mysql_real_escape_string($Key).", ";
      $Values .= "'".mysql_real_escape_string($Value)."', ";
  }


  //if its the last one, dont add a comma behind!
  else{

      //Still escaping all the strings:
      $Rows .= mysql_real_escape_string($Key);
      $Values .= "'".mysql_real_escape_string($Value)."'";
  } 

}//end foreach loop





//Insert etc etc...
$sql = mysql_query("INSERT INTO admin($Rows) VALUES($Values)");

//If successful:
if(mysql_query($conn, $sql)){
    echo "Records added.";
}


//Error ?
else{
    echo "Sorry, an error occured while inserting to: ".$Rows;
    echo "<br/>";
    mysql_error($conn);
}


//Close connection:
mysql_close($conn);