2017-01-23 10 views
-2

Таким образом, эта проблема, по-видимому, связана с версией сервера mysql. Эта функция PHP:Вставка функции не wrking на mysql 5.7

mysql_query("INSERT INTO `x_servers_pay`(`service_type`, `ip`, `time_created`, `amount`, `currency`,`receiver_email`) VALUES ('boost','".mysql_real_escape_string($ip)."','".time()."','".$price_boost."','".$currency_boost."','".$receiver_email."')"); 

отлично работает на MySQL 5.5.49 и 5.5.41, но не похоже на работу с MySQL Server 5.7. Существует еще одна упрощенная функция, которая также является INSERT, которая работает, но этого нет, и я полностью исчерпал идеи.

Я не смог найти журналы ошибок в папке журнала php-fpm или в папке журнала nginx.

Может ли кто-нибудь сделать предложение?

+2

ум, снимающий крышки с вашего названия? это называется «кричать», и никто не любит кричать; вы? там вы идете ;-) Редактировать: спасибо ;-) –

+2

ваш сервер больше не может поддерживать mysql_ api –

+1

Вы проверили 'mysql_error()'? И я действительно рекомендую вам перейти на [PDO] (https://secure.php.net/manual/en/pdo.prepared-statements.php) или [mysqli] (http://php.net/manual/ о/mysqli.quickstart.prepared-statements.php). Вы широко открыты для SQL-инъекций, а функции mysql_ * удаляются в PHP7 и устарели в предыдущих версиях. – aynber

ответ

1

«. Спасибо, ребята, только что понял свою ошибку mysql_error() не был включен в строку Теперь он дал мне: поле„time_payed“не имеет значения по умолчанию»

Это из-за этого '".time()."' вы цитируете функцию и обрабатывается как строковый литерал.

Что вам нужно сделать, это назначить переменную для него первым:

$time = time();

затем с помощью этой переменной в запросе.

VALUES ('boost','".mysql_real_escape_string($ip)."','$time', ... 

и значение по умолчанию для этого столбца.

Вы должны также получить в использование либо mysqli_ или PDO API (с подготовленным оператором). Это API mysql_ устарел и удален с PHP 7.

Даже mysql_real_escape_string() открыт для инъекций.

Прочтите SQL injection that gets around mysql_real_escape_string()

+0

Спасибо за ваш вклад Я рассмотрю переход на PDO. –

+0

@ MaximK.Magnes приветствуется и использую его с подготовленным заявлением. Только PDO не защищает от SQL-инъекции без него. –

+0

@ MaximK.Magnes даже 'mysql_real_escape_string()' is открыта для инъекций. Прочтите http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string. –