Проблемы с MySQL Queries на определенных пакетах хостинга - PullRequest
0 голосов
/ 06 сентября 2010

Я создаю веб-сайт на поддомене пакета хостинга моих компаний. Он имеет PHP MySQL операции, происходящие в фоновом режиме, то есть вставки, SELECT и т. Д.

Это самые основные из базовых операторов SQL, и все они отлично работают.

Однако я недавно скопировал ВСЕ со своего субдомена и загрузил все это в собственный хостинг-пакет моих клиентов, работающий под 1 & 1 , и теперь мои операторы INSERT не работают. Операторы SELECT, DELETE работают нормально, но не мои ВСТАВКИ.

Я думаю, что это одна из двух проблем, либо это ошибка прав доступа к новой базе данных, либо у меня есть какая-то явная ошибка в моем коде, что моя последняя база данных, похоже, не особо волновалась.

Вот мой код вставки:

<?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();
?>

Это касается добавления географического местоположения в базу данных из настроек карты / формы Google.

К сожалению, я не могу авторизовать предварительный просмотр в реальном времени, потому что область администрирования, где происходит проблема, безопасна.

Заранее спасибо за любую помощь.

РЕДАКТИРОВАТЬ: Я передавал одни и те же файлы туда и обратно, мой веб-сервер и мои клиенты, и все они работают на моем, но не на моих клиентах.

РЕДАКТИРОВАТЬ: Я плохо объяснил настоящую проблему здесь, извините. По сути, новая запись вставляется в базу данных, но она пуста.

print_r ($ _ POST); показывает:

Array ( [businessName] => test [placeName] => test [postCode] => test [latLong] => (51.152495, -1.440411) [Submit] => Submit Place )

Что есть все, что я отправил

Ответы [ 2 ]

0 голосов
/ 06 сентября 2010

Я провел серию тестов, и проблема заключалась в строке mysql_real_escape_string.Я удалил это, и это сработало.Однако мне все еще нужна защита от инъекций, поэтому я добавил аддлэш.

Я понятия не имею, почему он действовал таким образом, и я надеюсь, что мое исправление не было временным.

0 голосов
/ 06 сентября 2010

Пожалуйста, замените строку с надписью

$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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...