我向数据库表提交条目的php文件不起作用,我无法弄清楚原因。它接受Ajax提交,我知道问题不在于数据,或者Ajax请求因为它处理成功。唯一的问题是没有数据提交到我的数据库。我之前有这个工作,我改为代码连接之前它是一个变量的地址字符串。任何建议都会很棒!
这是php文件 更新:::这是更新的PHP文件
<?php
require("dbinfo.php");
// Create connection
$conn = new mysqli('localhost', $username, $password, $database);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$name = $_POST['user_name'];
$street = $_POST['user_street'];
$city = $_POST['user_city'];
$state = $_POST['user_state'];
$country = $_POST['user_country'];
$zip = $_POST['user_zip'];
$address = $street.', '.$city.', '.$state.', '.$country.', '.$zip;
$shortAdd = $city.', '.$state.', '.$country;
$type = $_POST['user_color'];
$desc = $_POST['user_message'];
$request_url = "http://maps.googleapis.com/maps/api/geocode/xml?address=".$address."&sensor=true";
$xml = simplexml_load_file($request_url) or die("url not loading");
$status = $xml->status;
if ($status=="OK") {
$lat = $xml->result->geometry->location->lat;
$lon = $xml->result->geometry->location->lng;
}
$sql = "INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`, `desc`)
VALUES (?, ?, ?, ?, ?, ?);";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssssss', $name, $shortAdd, $lat, $lon, $type, $desc);
$stmt->execute();
$conn->close();
?>
答案 0 :(得分:1)
当@MySelfBoy写道:
分配后,您必须执行SQL语句
他意味着你必须执行你的查询
$sql = "INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`, `desc`)
VALUES ('$name', '$shortAdd', '$lat', '$lon', '$type', '$desc');";
按照以下说明操作:
$conn->query($sql);
注意:我仍然无法发表评论,所以我在这里发帖。
答案 1 :(得分:1)
虽然docliving的答案是正确的,但 请 采取额外步骤并使用预备语句。没有它,您的代码很容易受到SQL注入攻击。将它转换为使用预准备语句只需要很小的改动。以下是如何使用mysqli:
$sql = "INSERT INTO `markers` (`name`, `address`, `lat`, `lng`, `type`, `desc`)
VALUES (?, ?, ?, ?, ?, ?);";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssssss', $name, $shortAdd, $lat, $lon, $type, $desc);
$stmt->execute();