Форма PHP не будет публиковать - PullRequest
0 голосов
/ 30 августа 2010

Я только что реализовал mysql_real_escape_string () и теперь мой скрипт не будет записывать в БД.Все работало нормально до добавления mysql_real_escape_string ():

Любые идеи ??

$name = mysql_real_escape_string($_POST['name']);
$description = mysql_real_escape_string($_POST['description']);
$custid = mysql_real_escape_string($_SESSION['customerid']);

mysql_send("INSERT INTO list 
              SET id = '',  
                  name = '$name', 
                  description = '$description', 
                  custid = '$custid' ");

Ответы [ 5 ]

2 голосов
/ 30 августа 2010

что это за функция mysql_ send ?
что если изменить ее на mysql_query ();

1 голос
/ 30 августа 2010

Должно быть легко выяснить, что происходит.

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

Если это не делает это очевидным, посмотрите, что должна сказать mysql_error ().

0 голосов
/ 30 августа 2010
       mysql_connect("localhost", "username", "password") or die(mysql_error());
       mysql_select_db("database") or die(mysql_error());
       $name = mysql_real_escape_string($_POST['name']);
       $description = mysql_real_escape_string($_POST['description']);   
       $custid = mysql_real_escape_string($_SESSION['customerid']);

       //If you doing Update use this code
       mysql_query("UPDATE list SET id = '', name = '$name', description = '$description' WHERE custid = '$custid' ") or die(mysql_error());
       //OR if you doing Insert use this  code.
       mysql_query("INSERT INTO list(name, description, custid) VALUES('$name', '$description', '$custid')") or die(mysql_error());
       //If custid is Integer type user $custid instead of '$custid'.                 

Если вы обновляете записи в таблице списка на основе custid, используйте команду UPDATE ИЛИ, если вы вставляете записи в таблицу списка, используйте команду INSERT.

0 голосов
/ 30 августа 2010

Типичная ошибка понимания того, как использовать определенные функции ... Вы просто используете mysql_real_escape_string для необработанных входных данных.Вы когда-нибудь слышали о санитарии / проверке ввода?mysql_real_escape_string не имеет смысла для чисел.Если вы проверили переменную как число, вам не нужно ее экранировать.

mysql_send - это псевдоним для mysql_query, верно?Используйте код отладки, добавьте echo mysql_error(); после mysql_send(...).

0 голосов
/ 30 августа 2010

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

$connection = mysql_connect(HOST, USERNAME, PASSWORD);
$cleanstring = mysql_real_escape_string("my string", $connection);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...