在php中将数据存储到数据库中的问题

时间:2014-10-07 04:45:49

标签: php mysql

我使用php和jquery创建了注册表单。我需要将输入详细信息存储到sql数据库。

我创建了config.php并包含在index.php和submit.php文件中。

但是仍然没有存储在数据库中,我可能知道config.php代码中的错误是什么,有人可以帮帮我吗?

这是我的config.php:

    <?php
    $mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "crop";
$prefix = "";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) die('Could not connect: ' . mysql_error());
mysql_select_db($mysql_database, $bd) or die('Could not connect: ' . mysql_error());
    ?>

这是code_exec.php:

    <?php
    session_start();
    include('config.php');
    $fname=$_POST['fname'];
    $lname=$_POST['lname'];
    $email=$_POST['email'];
    $pass=$_POST['pass'];
    $sex_select=$_POST['sex_select'];
    $month=$_POST['month'];
    $day=$_POST['day'];
    $year=$_POST['year'];

    $result = mysql_query("INSERT INTO crop(fname, lname, email, pass,`sex_select`, month,day,year)  
VALUES ('$fname', '$lname', '$email', '$pass','$sex_select', '$month','$day','$year')");

if (!$result) {
    die('Invalid query: ' . mysql_error());
}
    ?>

5 个答案:

答案 0 :(得分:3)

首先,您在sex-select列中使用了连字符。

MySQL认为你想要做一个转换为:

的数学方程式

性别(减号)选择。

将其包裹在反引号中并错过photo

的列
(fname, lname, email, pass, phone, photo, `sex-select`, month,day,year)
                                   ^^^^^^ missing column

mysql_error()mysql_query()一起使用会发出错误信号。

同样$sex-select需要$sex_select也不要对变量使用连字符。

因此,请将所有这些实例更改为VALUES中的$sex_select

('$fname', '$lname', '$email', '$pass', '$phone', '$photo', '$sex_select', '$month','$day','$year')

我注意到你的数据库和表都被命名为crop

$mysql_database = "crop";

mysql_query("INSERT INTO crop...

其中一个可能不正确。确保数据库名称与表格一致。这对我来说不合适,但我可能是错的。只有你知道他们叫什么。

mysql_close($con);这应该是mysql_close($bd);
因为你正在使用$bd = mysql_connect

error reporting添加到文件的顶部,这将有助于在生产测试期间。

error_reporting(E_ALL);
ini_set('display_errors', 1);

这也意味着错误,这是你没有做的,是检查错误。这在开发过程中很重要。


编辑:用于数据库连接错误检查:

而不是:

$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "crop";
$prefix = "";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Could not connect database");
mysql_select_db($mysql_database, $bd) or die("Could not select database");

如果有任何错误,请使用以下内容来捕获任何错误。使用die("Could not connect database")还不够好。

如果crop不是数据库,MySQL会告诉你。

<?php
$bd = mysql_connect('localhost', 'root', '');
if (!$bd) {
    die('Not connected : ' . mysql_error());
}

// make foo the current db
$db_selected = mysql_select_db('crop', $bd);
if (!$db_selected) {
    die ('Can\'t use foo : ' . mysql_error());
}

您的查询相同:

$result = mysql_query("INSERT INTO crop(fname, lname, email, pass, phone, photo, `sex-select`, month,day,year)  
VALUES ('$fname', '$lname', '$email', '$pass', '$phone', '$photo', '$sex-select', '$month','$day','$year')");

if (!$result) {
    die('Invalid query: ' . mysql_error());
}

另外,根据您的HTML表单:

<select name="sex-select" id="sex-select">

应该是

<select name="sex_select" id="sex-select">

答案 1 :(得分:0)

请参阅下面的查询,您将知道缺少列

的一个值的位置
mysql_query("INSERT INTO crop(fname, lname, email, pass, phone, missing_Photo_column, `sex-select`, month,day,year)VALUES('$fname', '$lname', '$email', '$pass', '$phone', '$photo', 
'$sex_select', '$month','$day','$year')");

在此查询中,您缺少照片列。

将此'$sex-select'更改为此'$sex_select'

$sex-select=$_POST['sex-select'];将此更改为此$sex_select=$_POST['sex_select'];

再多认为mysql_函数被删除了。

使用mysqli_ Function或PDO

对于mysqli_函数,请检查此链接http://php.net/manual/en/book.mysqli.php

FOR PDO请检查此链接http://php.net/manual/en/book.pdo.php

答案 2 :(得分:0)

您不能在变量名中使用连字符。改为使用下划线。

  

变量名遵循与PHP中其他标签相同的规则。有效的变量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线。作为正则表达式,它将表示为:'[a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff] *'   http://php.net/manual/en/language.variables.basics.php

您还需要在“性别选择”专栏中添加反贴词

`sex-select`

答案 3 :(得分:0)

您可以使用$sex_select=$_POST['sex-select'];或使用$sexselect=$_POST['sex-select'];因为php Considers select标记为mysql select选项。

答案 4 :(得分:0)

只需使用以下代码替换code_exec.php -

注意 - 请将您的输入名称sex-select更改为sex_select。而且您还在查询photo中缺少字段名称。请替换您在DB中创建的名称。

 <?php
    session_start();
    include('config.php');
    $fname=$_POST['fname'];
    $lname=$_POST['lname'];
    $email=$_POST['email'];
    $pass=$_POST['pass'];
    $phone=$_POST['phone'];
    $photo=$_POST['photo'];
    $sex_select=$_POST['sex_select'];
    $month=$_POST['month'];
    $day=$_POST['day'];
    $year=$_POST['year'];

    mysql_query("INSERT INTO crop(fname, lname, email, pass, phone, photo, sex-select, month,day,year)VALUES('".$fname."', '".$lname."', '".$email."', '".$pass."', '".$phone."', '".$photo."', '".$sex_select."', '".$month."','".$day."','".$year."')") or die(mysql_error());
    header("location: index.php?remarks=success");
    mysql_close($con);
    ?>