【发布时间】:2015-05-01 16:36:02
【问题描述】:
我的想法是在 HTML 表单中填写条目,然后将信息保存到数据库 (phpmyadmin)。然后在谷歌地图上显示信息(导出)。
但由于语法和逻辑问题,它不起作用。
我的 HTML 表单:
<html>
<head></head>
<body>
<form method="POST" action="../BackEnd/ShopSetup.php" name="Setup">
<td>Name</td>
<td>
<input type="text" name="name"></td>
</tr>
<tr>
<td>type</td>
<td>
<input type="varchar" name="type"></td>
</tr>
<tr>
<td>Address</td>
<td>
<input type="text" name="address"></td>
</tr>
<tr>
<td>Email</td>
<td>
<input type="email" name="email"></td>
</tr>
<tr>
<td>Phone Number</td>
<td>
<input type="varchar" name="phone"></td>
</tr>
<tr>
<td>longitude</td>
<td>
<input type="float" name="long"></td>
</tr>
<tr>
<td>latitude</td>
<td>
<input type="float" name="lat"></td>
</tr>
<tr>
<td>Opening Hour</td>
<td>
<input type="varchar" name="opening"></td>
</tr>
<tr>
<td>Closing Hour</td>
<td>
<input type="varchar" name="closing"></td>
</tr>
<tr>
<td>
<input id="button" type="submit" name="submit" value="Setup"></td>
</tr>
<tr></tr>
</form>
</body>
</html>
我在后端的 PHP 页面:
-
ShopSetup.php
<?php include ("../Connections/Connection.php"); if (isset($_POST["submit"])) { $name = $_POST["name"]; $type = $_POST["type"]; $address = $_POST["address"]; $email = $_POST["email"]; $phone = $_POST["phone"]; $long = $_POST["long"]; $lat = $_POST["lat"]; $opening = $_POST["opening"]; $closing = $_POST["closing"]; $sql = "INSERT INTO locations (name, type, address, email, phone, long, lat, opening, closing) VALUES('$name', '$type', '$address', '$email', '$phone', '$long', '$lat', '$opening', '$closing')"; $query = mysql_query($sql); if (!$query) { die ("Error : " . mysql_error()); } if(empty($name) || empty($type) || empty($address) || empty($email) || empty($phone) || empty($long) || empty($lat) || empty($opening) || empty($closing)) { echo "You did not fill out the required fields."; die(); // Note this } echo "<center></center>"; } ?> <h1> Your order is complete!</h1> <p class="intro-text">You will see your shop on the map soon<br></p> <center> <h3> <a href="../index.php"> go to home page </a></h3> </center>
但是当我提交表单时,我得到:
错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 'long, lat, opening, closing) 附近使用的正确语法 VALUES('', '', '', '', '', '', '', ' ', '')' 在第 1 行
保存打开/关闭时间的最佳 HTML 属性是什么:周数、天数。小时、分钟、秒?
【问题讨论】:
-
没有正当理由再使用
mysql_*API @Misunderstood -
请stop using
mysql_*functions。它们不再被维护并且是officially deprecated。改为了解prepared statements,并使用PDO。 -
我还是不明白是什么问题?我的地图正在从 phpmyadmin 数据库中导出信息并将其显示在地图上。但不是手动填写,而是用户应该将其填写为在数据库中存储信息的表单...所以我应该更改列名“长,纬度,关闭,打开”到别的东西? @误解
-
这里不在美国,但您所遵守的计算机安全法规是否不要求您从不受支持的 PHP 版本升级?
-
当然,这在一定程度上是合法的。这里的许多海报都无法控制他们的服务器@Misunderstood,我们已经开始看到效果an example where
mysql_*functions are removed.。 PDO 没有 具有 MySQLi API 所遭受的漏洞,并且是通常推荐的。不过,将人们称为“SQL 语法纳粹”以提高人们对该问题的认识有点误导。