我一直在我公司托管包的子域上建立一个网站。它有PHP MySQL操作在后台发生,即INSERT,SELECT等。
它们是最基本的SQL语句,它们都可以正常工作。
但是,我最近从我的子域复制了所有内容并将其全部上传到我的客户端自己的1&1运行的托管包,现在,我的INSERT语句不起作用。 SELECT,DELETE语句都可以正常工作,但不是我的INSERTS。
我认为这是两个问题之一,要么是新数据库的权限错误,要么我的代码中有一些明显的错误,我的上一个数据库似乎并不介意这么多。
这是我的插入代码:
<?php
include 'data.php';
$b_name = mysql_real_escape_string($_POST['businessName']);
$b_town = mysql_real_escape_string($_POST['placeName']);
$b_code = mysql_real_escape_string($_POST['postCode']);
$latlng = mysql_real_escape_string($_POST['latLong']);
mysql_connect($host, $user, $pass) or die ("Wrong Information");
mysql_select_db($db) or die("Wrong Database");
$newloc = preg_replace("/^.*\(([^)]*)\).*$/", '$1', $latlng);
$result = mysql_query("INSERT INTO reseller_addresses VALUES (NULL , '$b_name', '$b_code', '$b_town', '$newloc');") or die ("Broken Query");
echo "<script>setTimeout(\"self.parent.location.reload(true);\", 1000);</script><font color=\"#fbf7d7\">$businessName Successfully Added to the Database</font>";
mysql_close();
?>
这是关于从谷歌地图/表单设置将地理位置添加到数据库中。
不幸的是,我无法授权实时预览,因为发生故障的管理区域是安全的。
提前感谢您的帮助。
编辑:我在我的网络服务器和我的客户端来回传递了相同的文件,他们都在我的网站上工作,但不是我的客户。 编辑:我在这里严重解释了实际问题,对不起。基本上,新记录被插入到数据库中,但它是空的。print_r($ _ POST);揭示了:
Array ( [businessName] => test [placeName] => test [postCode] => test [latLong] => (51.152495, -1.440411) [Submit] => Submit Place )
我提交的所有内容
答案 0 :(得分:0)
请替换
所在的行$result = mysql_query("INSERT INTO ...") or die ("Broken Query");
以下内容:
$query = "INSERT INTO ...";
echo $query;
$result = mysql_query($query) or die (mysql_error());
$warnings = mysql_query("SHOW WARNINGS");
if ( mysql_num_rows($warnings) ) {
while ( $row = mysql_fetch_assoc($warnings) ) {
echo "\nMySQL Warning: ".$row['Message'];
}
} else {
echo "\nNo warnings";
}
并告诉我们输出的是什么。
另外,请在error_reporting(E_ALL & ~E_STRICT);
之后立即添加include 'data.php';
,看看是否收到任何错误消息。
请同时告诉我们SHOW CREATE TABLE reseller_addresses
的输出。
答案 1 :(得分:0)
我做了一系列测试,问题在于mysql_real_escape_string行。我删除了它,它工作。我仍然需要一些注射保护,所以我添加了addslashes。
我不知道为什么会这样做,我希望我的修复不是暂时的。