我使用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());
}
?>
答案 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);
?>