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

Как запись из базы передать переменной скрипту (PHP и MySQL)

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

Зашли как: Guest
Все форумы >> [Веб-программинг] >> Как запись из базы передать переменной скрипту (PHP и MySQL)
Имя
Сообщение << Старые топики   Новые топики >>
Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-03 14:20:11.756666   
Sozedatel

Сообщений: 39
Оценки: 0
Присоединился: 2008-01-09 22:49:42.676666
Имеется скрипт:
<?php
$GENREHOME="genre.php?id=";//адрес писателей по одному жанру
$DBLOCATION = "LOCALHOST";
$DBNAME = "ark_sovar";
$DBUSER = "root";
$DBPASSWD = "";
$DBCONNECT = @mysql_connect($DBLOCATION,$DBUSER,$DBPASSWD);
if (!$DBCONNECT)
{
  echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому
            корректное отображение страницы невозможно.</P>" );
  exit();
}
if (!@mysql_select_db($DBNAME, $DBCONNECT))
{
  echo( "<P>В настоящий момент база данных не доступна, поэтому
            корректное отображение страницы невозможно.</P>" );
  exit();
}
$GEN = @MYSQL_QUERY("SELECT * FROM table_genre", $DBCONNECT);
echo("<li><a href='index.php'>Главная</a>");
echo("<li><a href='writer.php'>Все писатели</a>");
WHILE ($GENRE = @MYSQL_FETCH_ROW($GEN))
{
echo"<li><A HREF='$GENREHOME$GENRE[1]'>$GENRE[1]</A><BR>"; //Здесь образуется ссылка типа : http://localhost/genre.php?id=запись из базы данных
}
//ВЫВОДИМ НУЖНЫЙ ЖАНР
$GEN = @MYSQL_QUERY("SELECT * FROM table_genre WHERE name=$id;", $DBCONNECT);  //'$id' так тоже пробовал, работает если 
WHILE ($GENRE = @MYSQL_FETCH_ROW($GEN))                                        //просто ввести вместо переменной $id
{                                                                              //сразу значение'запись'
echo("<li><A HREF='GENRE[0]'>$GENRE[0]</A><BR>");
}
?>
Скрипт выводит жанры книг из базы и делает ссылки типа http://localhost/genre.php?id=жанр
После нажатия на ссылку мне нужно обработать эту переменную и вывести все записи из другой
таблицы суказанным в переменной жанре.
Проблема в том что последнее не выполняется, так как в переменную $id ничего не записывается,
я и пытался её выводить.
Суть в том, что мне необходимо передать переменную с помощью ссылки, не формой через GET или
POST, а именно через ссылку.
Post #: 1
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-03 14:38:12.516666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
quote:

ORIGINAL: Sozedatel
Имеется скрипт:
&lt;?php
$GEN = @MYSQL_QUERY("SELECT * FROM table_genre WHERE name=$id;", $DBCONNECT);&nbsp; // зачем здесь точка с запятой?
в том, что мне необходимо передать переменную с помощью ссылки, не формой через GET или
POST, а именно через ссылку.
Именно через ссылку и передается методом GET. Допиши в начале $id=@$_GET['id'];
И проверку не забудь на допустимые значения ID !!, а то получается реальный SQL-injection
Post #: 2
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-03 14:52:30.270000   
Sozedatel

Сообщений: 39
Оценки: 0
Присоединился: 2008-01-09 22:49:42.676666
:D Всё оке спасыбо за совет, учусь:)
Post #: 3
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-05 09:32:39.006666   
АнтонММФ

Сообщений: 1364
Оценки: 0
Присоединился: 2007-06-11 08:58:50.760000
продолжая тему… есть БД exhib с таблицей head. В таблице 3 поля: id, title, text. id является primary с первичным ключом, имеет тип INT. title и text имеют тип TEXT.
Вопрос: как сформировать код для вывода на экран содержимого title и text через передачу в адресной строке параметра id? Т.е. к примеру http://localhost/exhibition.php?id=1
А то у меня при попытке обработать получаемую из БД информацию вываливается ошибка:
$link = mysql_connect("localhost", "root", ""); $R=mysql_db_query("exhib","SELECT * FROM head WHERE id=$id",$link); $data=mysql_fetch_array($R,MYSQL_ASSOC); Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in G:\home\localhost\www\exhibition.php on line 32
Post #: 4
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-05 10:25:24.826666   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
$conn_db =mysql_connect('localhost','root','');
$op_db=mysql_select_db("exhib",$conn_db);
 
$res=mysql_query("SELECT * FROM head WHERE id='$id'",$op_db);
$row=mysql_fetch_assoc($res);
 
echo $row['title'];
echo $row['text'];

 
Post #: 5
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-05 11:37:56.670000   
АнтонММФ

Сообщений: 1364
Оценки: 0
Присоединился: 2007-06-11 08:58:50.760000
скрипт немножко не работает, вот модифицированный рабочий:
$id=$_REQUEST['id']; $conn=mysql_connect('localhost','root',''); $op=mysql_select_db("exhib",$conn); $r=mysql_query("SELECT * FROM head1 WHERE id='$id'"); $row=mysql_fetch_assoc($r); echo $row['title']; echo $row['text'];
Пасипа за помощь! :)
Post #: 6
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-05 15:58:28.103333   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
АнтонММФ, еще не плохо было бы посмотреть, что принимаешь в качестве переменной id, прежде чем вставлять ее в SQL запрос.
Post #: 7
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-06 19:12:58.990000   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
quote:

ORIGINAL: oRb

АнтонММФ, еще не плохо было бы посмотреть, что принимаешь в качестве переменной id, прежде чем вставлять ее в SQL запрос.
Это ОБЯЗАТЕЛЬНО !!!
Post #: 8
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-07 13:46:46.310000   
АнтонММФ

Сообщений: 1364
Оценки: 0
Присоединился: 2007-06-11 08:58:50.760000
ну это понятно… итак, у меня id должны передваться только числовые значения и ничего больше… т.е. необходимо отфильтровывать все "плохие символы"
дополняю код:
$id=$_REQUEST['id']; $id=str_replace(array('/','.','`','\\','[a-z_]/i'),'',$id); для того, чтобы символы /, ., `, \\, _ и все латинские символы любого регистра отсекались…
но при exhibition.php?id=1as содержимое БД выводится нормально, а при exhibition.php?id=fg1as ничего не выводится… я так понимаю, что никакого отсечения не происходит?
Post #: 9
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-07 14:16:50.530000   
Панда

Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000
а че бы оно происходило?
функция str_replace отсекает тока те символы которые ты передал.
если нужна регулярка то preg_replace
Post #: 10
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-07 14:19:28.350000   
Панда

Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000
думаю что для тя подойдет \D
отсечет все кроме цифр
Post #: 11
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-07 15:50:00.780000   
Cep}|{

Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
так,&nbsp; $id=preg_replace("|[^0-9-]+|s", "", $id); или так $id=(is_numeric($id)) ? $id:'';
Post #: 12
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-07 19:10:31.330000   
oRb

Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
Парни, все гораздо проще.
Жесткое приведение к типу - наиболее быстрое и безопасное.
$id=(int)$_REQUEST['id'];
Post #: 13
Страниц:  [1]
Все форумы >> [Веб-программинг] >> Как запись из базы передать переменной скрипту (PHP и MySQL)







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

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