Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

почему не выполняется sql-запрос

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Веб-программинг] >> почему не выполняется sql-запрос
Имя
Сообщение << Старые топики   Новые топики >>
почему не выполняется sql-запрос - 2008-10-18 21:54:21.090000   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
помогите плс ничего уже в голову не идет, что такое

&lt;html&gt; &lt;head&gt; &lt;title&gt;Registration&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;font align="left"&gt; &lt;h2&gt;Registration to &lt;font color="8b8989"&gt;Hack bl0g&lt;/font&gt;&lt;/h2&gt;&lt;br&gt; &lt;?php if(isset($_POST['ok'])) { if($login and $email and $passwd and $passwd2) { $_POST['login'] = $login; $_POST['email'] = $email; $_POST['passwd'] = $passwd; $_POST['passwd2'] = $passwd2 ; $table="users"; $sql = 'INSERT INTO `users` (`login`, `password`, `email`) VALUES ("'.$login.'", "'.$passwd.'", "'.$email.'")'; $connect = mysql_connect("localhost", "testuser", "testuser777"); mysql_select_db("hackblog", $connect); mysql_query($sql, $connect); mysql_close($connect); } else { echo('&lt;script&gt;alert("Не заполнены все необходимые поля")&lt;/script&gt;'); } } ?&gt; &lt;form action="&lt;?php $_SERVER['PHP_SELF']; ?&gt;" method="post"&gt; &lt;b&gt;Login:&lt;/b&gt;&lt;br&gt; &lt;input type="text" name="login"&gt;&lt;br&gt;&lt;br&gt; &lt;b&gt;Email:&lt;/b&gt;&lt;br&gt; &lt;input type="text" name="email"&gt;&lt;br&gt;&lt;br&gt; &lt;b&gt;Password:&lt;/b&gt;&lt;br&gt; &lt;input type="password" name="passwd"&gt;&lt;br&gt;&lt;br&gt; &lt;b&gt;Repeat password:&lt;/b&gt;&lt;br&gt; &lt;input type="password" name="passwd2"&gt;&lt;br&gt;&lt;br&gt; &lt;input type="submit" name="ok" value="Register me!"&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt;
Post #: 1
RE: почему не выполняется sql-запрос - 2008-10-18 22:24:02.820000   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
ну вообще достаточно и просто

mysql_query($sql);

и в запросе напиши так
$sql = "INSERT INTO `users` (`login`, `password`, `email`) VALUES ('$login', '$passwd', '$email')";

хотя незнаю спасёт ли но так тоже можно)
Post #: 2
RE: почему не выполняется sql-запрос - 2008-10-18 23:35:46.443333   
med

Сообщений: 138
Оценки: 0
Присоединился: 2006-06-12 21:06:38
интересно что случится если в любую переменную загонят кавычки и сделают post
Post #: 3
RE: почему не выполняется sql-запрос - 2008-10-19 01:42:07.006666   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
надо использовать конвертер для этого.. я обычно конвертю все символы 
Post #: 4
RE: почему не выполняется sql-запрос - 2008-10-19 02:33:34.270000   
med

Сообщений: 138
Оценки: 0
Присоединился: 2006-06-12 21:06:38
покажи пример фильтра? что то типа $string = stripslashes($string); $string = htmlentities($string); $string = strip_tags($string); ?

ещё думаю если в установках php register globals включены, этот скрипт так же уязвим т.к. нету проверки откуда исходит запрос POST, значит можно послать свой собственный?
Post #: 5
RE: почему не выполняется sql-запрос - 2008-10-19 12:31:26.900000   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
FriLL, да выруби же ты регистр глобалс на своем компе:
quote:

$_POST['login'] = $login;
$_POST['email'] = $email;
$_POST['passwd'] = $passwd;
$_POST['passwd2'] = $passwd2 ;

полный бред.

Попробуй:
mysql_query($sql, $connect) or die(mysql_error());
Post #: 6
RE: почему не выполняется sql-запрос - 2008-10-19 14:23:55.553333   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333

No database selected
Post #: 7
RE: почему не выполняется sql-запрос - 2008-10-19 14:35:36.776666   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000

quote:

ORIGINAL: FriLL

No database selected

вот в эту сторону и копай
Post #: 8
RE: почему не выполняется sql-запрос - 2008-10-19 14:40:33.826666   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
&lt;?php if(isset($_POST['ok'])) { if($_POST['login'] and $_POST['email'] and $_POST['passwd'] and $_POST['passwd2']) { $table="users"; $sql = 'INSERT INTO `users` (`login`, `password`, `email`) VALUES ("'.$_POST['login'].'", "'.$_POST['passwd'].'", "'.$_POST['email'].'")'; $connect = mysql_connect("localhost", "testuser", "testuser777"); mysql_select_db("hackblog", $connect); mysql_query($sql, $connect) or die(mysql_error()); mysql_close($connect); } else { echo('&lt;sсriрt&gt;alert("Не заполнены все необходимые поля")&lt;/sсriрt&gt;'); } } ?&gt; теперь типо все так выглядит
странно почему No database selected
ведь ясно базу выбрал mysql_select_db("hackblog", $connect);
Post #: 9
RE: почему не выполняется sql-запрос - 2008-10-19 15:06:56.413333   
Pashkela

Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
Вот пример конфига обычного, покури:)

&lt;?php $path=''; $website="http://твой_сайт.ru/"; //format look like http://www.yourwebsitename.com/ $servername='бла-бла'; // Your MySql Server Name or IP address here $dbusername='бла-бла'; // Login user id here $dbpassword='бла-бла'; // Login password here $dbname='бла-бла'; // Your database name here connecttodb($servername,$dbname,$dbusername,$dbpassword); function connecttodb($servername,$dbname,$dbuser,$dbpassword) { global $link; $link=mysql_connect ("$servername","$dbuser","$dbpassword"); if(!$link){die("Could not connect to MySQL");} mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error()); } ?&gt;
$table ты написал, а при соединении его не указываешь, хотя указывать надо даже не $table, а имя самой базы

Т.е. ключ решению загадки в коде здесь:

mysql_select_db("$dbname",$link)
Post #: 10
RE: почему не выполняется sql-запрос - 2008-10-19 15:50:53.963333   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
послушайте уважаемый у меня все правильно
mysql_select_db("hackblog", $connect);
Post #: 11
RE: почему не выполняется sql-запрос - 2008-10-19 15:58:21.310000   
Pashkela

Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
connecttodb($servername,$dbname,$dbusername,$dbpassword)

А это где? Чтобы в одну строчку и сервер, и дб-нэйм и юзер и пароль?

Посмотри на последовательность, она у тебя нарушена, ты сначала указываешь имя базы, а не хост
Post #: 12
RE: почему не выполняется sql-запрос - 2008-10-19 16:51:29.563333   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
function connecttodb($servername,$dbname,$dbuser,$dbpassword) { global $link; $link=mysql_connect ("$servername","$dbuser","$dbpassword"); if(!$link){die("Could not connect to MySQL");} mysql_select_db("$dbname",$link) or die ("could not open db".mysql_error()); }
вапщето это ты сам делаеш такую функцию,
а mysql_select_db() это встоеная функция пхп
Post #: 13
RE: почему не выполняется sql-запрос - 2008-10-19 17:31:49.766666   
Pashkela

Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
FriLL, не тупи, смотри правильную последовательность в момент соединения

connecttodb($servername,$dbname,$dbusername,$dbpassword)

а функцию делаю не я, а phpbb:D

100% рабочий вариант. Просто посмотри внимательно
Post #: 14
RE: почему не выполняется sql-запрос - 2008-10-19 19:04:07.380000   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
уууууууууу…………………………………
блин фрил ну ты тип..
вот держи класс работы с базой
&lt;?php class db { &nbsp;&nbsp; public&nbsp; $db_id = false; &nbsp;&nbsp; public&nbsp; $query_num = 0; &nbsp;&nbsp; public&nbsp; $query_list = array(); &nbsp;&nbsp; public&nbsp; $mysql_error = ''; &nbsp;&nbsp; public&nbsp; $mysql_version = ''; &nbsp;&nbsp; public&nbsp; $mysql_error_num = 0; &nbsp;&nbsp; public&nbsp; $mysql_extend = "MySQL"; &nbsp;&nbsp; public&nbsp; $MySQL_time_taken = 0; &nbsp;&nbsp; public&nbsp; $query_id = false; &nbsp;&nbsp; public function connect($db_user, $db_pass, $db_name, $db_location = 'localhost', $show_error=1) &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(!$this-&gt;db_id = @mysql_connect($db_location, $db_user, $db_pass)) { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if($show_error == 1) { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $this-&gt;display_error(mysql_error(), mysql_errno()); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return false; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(!@mysql_select_db($db_name, $this-&gt;db_id)) { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if($show_error == 1) { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $this-&gt;display_error(mysql_error(), mysql_errno()); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return false; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $this-&gt;mysql_version = mysql_get_server_info(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql_query("SET NAMES 'utf8';"); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return true; &nbsp;&nbsp; } &nbsp;&nbsp; public function get_cell ($query) &nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result = mysql_query($query) or die("Query failed : " . mysql_error()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ($line = mysql_fetch_array($result)) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach ($line as $col_value) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $data = "$col_value";}} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql_free_result($result); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $data; &nbsp;&nbsp; } &nbsp;&nbsp; public function get_arr ($query) &nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result = mysql_query($query) or die("Query failed : " . mysql_error()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $arr = mysql_fetch_array($result); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mysql_free_result($result); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $arr; &nbsp;&nbsp; } &nbsp;&nbsp; public function query ($query) &nbsp;&nbsp; { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $result = mysql_query($query) or die($this-&gt;display_error(mysql_error(), mysql_errno())); &nbsp;&nbsp; } &nbsp;&nbsp; public function free( $query_id = '' ) &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if ($query_id == '') $query_id = $this-&gt;query_id; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; @mysql_free_result($query_id); &nbsp;&nbsp; } &nbsp;&nbsp; public function close() &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; @mysql_close($this-&gt;db_id); &nbsp;&nbsp; } &nbsp;&nbsp; public function get_real_time() &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; list($seconds, $microSeconds) = explode(' ', microtime()); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return ((float)$seconds + (float)$microSeconds); &nbsp;&nbsp; } &nbsp;&nbsp; public function display_error($error, $error_num, $query = '') &nbsp;&nbsp; { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if($query) { &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $query = preg_replace("/([0-9a-f]){32}/", "****", $query); &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; $query_str = "$query"; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; echo $query_str; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; exit(); &nbsp;&nbsp; } } ?&gt; пользоваться так

$db     = new db;   - создание объекта базы

$db->connect('db_user','db_pass','db_name','db_port') - думаю параметры тут ясно что к чему, порт не обязательный параметр
$db->get_cell(""); - возвращает одну ячейку
$db->get_cell(""); - возвращает асоциированый массив
$db->query(""); - выполняет запрос без возвращения результата
$db->close(); -закрытие соединение
Post #: 15
RE: почему не выполняется sql-запрос - 2008-10-20 12:51:11.480000   
saint_byte

Сообщений: 19
Оценки: 0
Присоединился: 2008-09-30 11:21:05.296666
А что mysql_escape_string не хватает ? 
Post #: 16
RE: почему не выполняется sql-запрос - 2008-10-20 16:51:49.866666   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
magistr_bender мне не нужен целый класс для того чтобы занести одну запись в бд
Post #: 17
RE: почему не выполняется sql-запрос - 2008-10-20 17:09:11.403333   
Pashkela

Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
так ты что, до сих пор не разобрался что ли?
Post #: 18
RE: почему не выполняется sql-запрос - 2008-10-20 17:17:37.610000   
kolPeeX

Сообщений: 1456
Оценки: 0
Присоединился: 2007-01-25 14:57:57.683333
проверь существование базы hackblog и наличие у testuser на нее прав.

&lt;?php if(!isset($_POST['ok'])) die; if(!($_POST['login'] and $_POST['email'] and $_POST['passwd'] and $_POST['passwd2'])) { echo('&lt;sсriрt&gt;alert("Не заполнены все необходимые поля")&lt;/sсriрt&gt;'); } $sql = 'INSERT INTO `users` (`login`, `password`, `email`) VALUES ("' .mysql_escape_string($_POST['login']).'", "' .mysql_escape_string($_POST['passwd']).'", "' .mysql_escape_string($_POST['email']).'")'; mysql_connect("localhost", "testuser", "testuser777"); mysql_select_db("hackblog"); mysql_query($sql) or die(mysql_error()); mysql_close(); ?&gt;

p.s. научись провильно оформлять код, так легче ошибки искать
Post #: 19
RE: почему не выполняется sql-запрос - 2008-10-20 18:35:17.720000   
magistr_bender

Сообщений: 977
Оценки: 0
Присоединился: 2008-02-22 20:10:21.133333
вот хорошая документация по оформлению документов пхп http://framework.zend.com/manual/ru/coding-standard.html
Post #: 20
RE: почему не выполняется sql-запрос - 2008-10-20 18:50:50.660000   
Pashkela

Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
Есть еще такая мысль, что типо если в Денвере монстрячишь, то под рутом не получится, надо отдельного юзера заводить. И вообше надо проверить file_priv
Post #: 21
RE: почему не выполняется sql-запрос - 2008-10-20 19:57:06.110000   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000

quote:

ORIGINAL: Pashkela

Есть еще такая мысль, что типо если в Денвере монстрячишь, то под рутом не получится, надо отдельного юзера заводить. И вообше надо проверить file_pryv

а теперь все тоже самое, только чтоб содержимое твое поста и другие поняли ;)
Post #: 22
RE: почему не выполняется sql-запрос - 2008-10-20 20:27:59.340000   
Pashkela

Сообщений: 3756
Оценки: 736
Присоединился: 2007-01-03 06:19:40.900000
ну вот

Post #: 23
RE: почему не выполняется sql-запрос - 2008-10-25 12:12:50.216666   
Buffalon

Сообщений: 14
Оценки: 0
Присоединился: 2008-10-17 18:41:56.566666
quote:

ORIGINAL: FriLL

помогите плс ничего уже в голову не идет, что такое

&lt;html&gt; &lt;head&gt; &lt;title&gt;Registration&lt;/title&gt; &lt;/head&gt; &lt;bоdу&gt; &lt;font align="left"&gt; &lt;h2&gt;Registration to &lt;font color="8b8989"&gt;Hack bl0g&lt;/font&gt;&lt;/h2&gt;&lt;br&gt; &lt;?php if(isset($_POST['ok'])) { if($login and $email and $passwd and $passwd2) { $_POST['login'] = $login; $_POST['email'] = $email; $_POST['passwd'] = $passwd; $_POST['passwd2'] = $passwd2 ; $table="users"; $sql = 'INSERT INTO `users` (`login`, `password`, `email`) VALUES ("'.$login.'", "'.$passwd.'", "'.$email.'")'; $connect = mysql_connect("localhost", "testuser", "testuser777"); mysql_select_db("hackblog", $connect); mysql_query($sql, $connect); mysql_close($connect); } else { echo('&lt;sсriрt&gt;alert("Не заполнены все необходимые поля")&lt;/sсriрt&gt;'); } } ?&gt; &lt;form action="&lt;?php $_SERVER['PHP_SELF']; ?&gt;" method="post"&gt; &lt;b&gt;Login:&lt;/b&gt;&lt;br&gt; &lt;input type="text" name="login"&gt;&lt;br&gt;&lt;br&gt; &lt;b&gt;Email:&lt;/b&gt;&lt;br&gt; &lt;input type="text" name="email"&gt;&lt;br&gt;&lt;br&gt; &lt;b&gt;Password:&lt;/b&gt;&lt;br&gt; &lt;input type="password" name="passwd"&gt;&lt;br&gt;&lt;br&gt; &lt;b&gt;Repeat password:&lt;/b&gt;&lt;br&gt; &lt;input type="password" name="passwd2"&gt;&lt;br&gt;&lt;br&gt; &lt;input type="submit" name="ok" value="Register me!"&gt; &lt;/form&gt; &lt;/bоdу&gt; &lt;/html&gt;

Парни вы реально жжоте , вас бы всех на бАШ … .->
Что за бред->


Зачем isset($_POST['ok']) (это если существует ) обычно делают так - (!empty($_POST['ok'])(Это если нажата)


if($login and $email and $passwd and $passwd2) ЧТо ты этим хотел сказать ???вообще непонимаю , у тебя же всё через POST … .


$_POST['login'] = $login;
$_POST['email'] = $email;
$_POST['passwd'] = $passwd;
$_POST['passwd2'] = $passwd2 ;


Вообще то x=3 , а не наоборот ,-> $login=$_POST['login'];

Дальше смотреть нестал/ lol
Post #: 24
RE: почему не выполняется sql-запрос - 2008-10-26 12:38:33.986666   
Панда

Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000

quote:

ORIGINAL: Buffalon

Зачем isset($_POST['ok']) (это если существует ) обычно делают так - (!empty($_POST['ok'])(Это если нажата)



Как я понял нужно узнать существует ли переменная, для этих целей и нужна функция isset. Твой метод хоть и даст такой же результат, но както через ж@пу.
Post #: 25
RE: почему не выполняется sql-запрос - 2008-10-26 12:40:33.550000   
FriLL

Сообщений: 2539
Оценки: 335
Присоединился: 2007-08-11 17:14:26.703333
все проблема решена, просто прав моему юзверю не хватало!
Post #: 26
Страниц:  [1]
Все форумы >> [Веб-программинг] >> почему не выполняется sql-запрос







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.