我无法从Php注册表单中保存Mysql Db中的出生日期,我做错了什么?
$month = $_POST['month'];
$day = $_POST['day'];
$year = $_POST['year'];
mysql_query("INSERT INTO users(FirstName,LastName,Phone,DOB)VALUES ( $FirstName + "','" + $LastName + "','" + $Phone + "','" + $Year + "-" + $Month + "-" + $Day + ')") or die("".mysql_error());
echo "Successful Registration!";
}
?><body>
<form method="post" action="check.php" enctype="multipart/form-data">
<table width="300" border="0"<table align="center" cellpadding = "10">
<tr>
<td>FirstName:</td>
<td><input type="text" name="FirstName"></td>
</tr>
<tr>
<td>LastName:</td>
<td><input type="text" name="LastName"></td>
<tr>
<td>Phone:</td>
<td><input type="double" name="Phone"></td>
<!----- Date Of Birth -------------------------------------------------------->
<tr>
<td>DATE OF BIRTH</td>
<td>
<select name="Birthday_day" id="Birthday_Day">
<option value="-1">Day:</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select id="Birthday_Month" name="Birthday_Month">
<option value="-1">Month:</option>
<option value="January">Jan</option>
<option value="February">Feb</option>
<option value="March">Mar</option>
<option value="April">Apr</option>
<option value="May">May</option>
<option value="June">Jun</option>
<option value="July">Jul</option>
<option value="August">Aug</option>
<option value="September">Sep</option>
<option value="October">Oct</option>
<option value="November">Nov</option>
<option value="December">Dec</option>
</select>
<select name="Birthday_Year" id="Birthday_Year">
<option value="-1">Year:</option>
<option value="1996">1996</option>
<option value="1995">1995</option>
<option value="1994">1994</option>
<option value="1993">1993</option>
<option value="1992">1992</option>
<option value="1991">1991</option>
<option value="1990">1990</option>
<option value="1989">1989</option>
<option value="1988">1988</option>
<option value="1987">1987</option>
<option value="1986">1986</option>
<option value="1985">1985</option>
<option value="1984">1984</option>
<option value="1983">1983</option>
<option value="1982">1982</option>
<option value="1981">1981</option>
<option value="1980">1980</option>
<option value="1979">1979</option>
<option value="1978">1978</option>
<option value="1977">1977</option>
<option value="1976">1976</option>
<option value="1975">1975</option>
<option value="1974">1974</option>
<option value="1973">1973</option>
<option value="1972">1972</option>
<option value="1971">1971</option>
<option value="1970">1970</option>
<option value="1969">1969</option>
<option value="1968">1968</option>
<option value="1967">1967</option>
<option value="1966">1966</option>
<option value="1965">1965</option>
<option value="1964">1964</option>
<option value="1963">1963</option>
<option value="1962">1962</option>
<option value="1961">1961</option>
<option value="1960">1960</option>
<option value="1959">1959</option>
<option value="1958">1958</option>
<option value="1997">1957</option>
<option value="1956">1956</option>
<option value="1955">1955</option>
<option value="1954">1954</option>
<option value="1953">1953</option>
<option value="1952">1952</option>
<option value="1951">1951</option>
<option value="1950">1950</option>
<option value="1949">1949</option>
<option value="1948">1948</option>
<option value="1947">1947</option>
<option value="1946">1946</option>
<option value="1945">1945</option>
<option value="1944">1944</option>
<option value="1943">1943</option>
<option value="1942">1942</option>
<option value="1941">1941</option>
<option value="1940">1940</option>
<option value="1939">1939</option>
<option value="1938">1938</option>
<option value="1937">1937</option>
<option value="1936">1936</option>
<option value="1935">1935</option>
<option value="1934">1934</option>
<option value="1933">1933</option>
<option value="1932">1932</option>
<option value="1931">1931</option>
<option value="1930">1930</option>
<option value="1929">1929</option>
<option value="1928">1928</option>
<option value="1927">1927</option>
<option value="1926">1926</option>
<option value="1925">1925</option>
<option value="1924">1924</option>
<option value="1923">1923</option>
<option value="1922">1922</option>
<option value="1921">1921</option>
<option value="1920">1920</option>
<option value="1919">1919</option>
<option value="1918">1918</option>
<option value="1917">1917</option>
<option value="1916">1916</option>
<option value="1915">1915</option>
<option value="1914">1914</option>
<option value="1913">1913</option>
<option value="1912">1912</option>
<option value="1911">1911</option>
<option value="1910">1910</option>
</select>
</td>
</tr>
</tr>
<span style="size:10%;color:#FF0000"><?php if(isset($_GET["pass"])) { echo $_GET["pass"]; } ?></span>
<tr>
<td> </td>
<td><input type="submit" value="Submit" name="registration" /></td>
</tr>
</table>
</form>
你在mysql查询中连接错误了。
$FirstName + "','"
以上是错的。
使用它如下。
'". $FirstName ."',
编辑
$date = $year."-".$Month."-".$Day;
INSERT INTO users
(FirstName,LastName,Phone,DOB)
VALUES
( '". $FirstName ."','". $LastName ."','". $Phone ."','". $date ."')
Mysql查询应该是格式化的
mysql_query("INSERT INTO users(FirstName,LastName,Phone,DOB)VALUES ( '".$FirstName."','". $LastName . "','" . $Phone . "','" . $Year . "-" . $Month + "-" . $Day . '")");
正如其他人所说,为什么不使用PDO或MySQLi?
您的代码编写起来会更简单,并且您的代码可以随着其他较新版本的PHP(MySQL功能从PHP5.5弃用)而维持,例如:
<?php
$month = $_POST['month']; $day = $_POST['day']; $year = $_POST['year']; $dob = $_SESSION['dob'];
$_SESSION['dob'] = $day . "-" . $month . "-" . $year;
$stmt = $pdoconnect->prepare('INSERT INTO users(FirstName,LastName,Phone,DOB) VALUES (:firstname, :lastname, :phone, :dob)')
$stmt->execute(array(
'firstname' => $FirstName,
'lastname' => $LastName,
'phone' => $Phone,
'dob'=> $dob
));
echo "Successful Registration!";
?>
我提供了一个使用session简化DOB的解决方案。
编辑(添加如何使用pdo_mysql):
// $DNS contain host (mysql:host=localhost by default), the database name and MySQL port (port=3606 by default).
$dns = 'mysql:host=localhost;dbname=beathost_cms;port=3606';
// $user --> MySQL USER
$user = 'root';
// $pass --> MySQL PASSWORD
$pass = 'root*';
try {
$pdoconnect = new PDO($dns, $user, $pass);
$pdoconnect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
} catch (PDOException $e) {
die ('An error occured with MySQL: ' . $e->getMessage());
}
你应该
这个查询应该做你想要的没有错误:
$month = $_POST['Birthday_Month'];
$day = $_POST['Birthday_day'];
$year = $_POST['Birthday_Year'];
$date = $year . "-" . $month . "-" . $day;
$query = "INSERT INTO users (FirstName,LastName,Phone,DOB) VALUES ( '" . $FirstName . "','". $LastName . "','" . $Phone . "','" . $date . "')";
mysql_query($query) or die(mysql_error());
编辑:我看到你试图获取错误的POST-vars!你获取了$ _POST ['day'],但你需要获取$ _POST ['Birthday_day'],这是你的选择字段的名称