Как запись из базы передать переменной скрипту (PHP и MySQL)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Как запись из базы передать переменной скрипту (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, а именно через ссылку.
|
|
|
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-03 14:38:12.516666
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
quote:
ORIGINAL: Sozedatel Имеется скрипт: <?php $GEN = @MYSQL_QUERY("SELECT * FROM table_genre WHERE name=$id;", $DBCONNECT); // зачем здесь точка с запятой? в том, что мне необходимо передать переменную с помощью ссылки, не формой через GET или POST, а именно через ссылку. Именно через ссылку и передается методом GET. Допиши в начале $id=@$_GET['id']; И проверку не забудь на допустимые значения ID !!, а то получается реальный SQL-injection
|
|
|
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-03 14:52:30.270000
|
|
|
Sozedatel
Сообщений: 39
Оценки: 0
Присоединился: 2008-01-09 22:49:42.676666
|
:D Всё оке спасыбо за совет, учусь:)
|
|
|
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
|
|
|
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'];
|
|
|
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'];
Пасипа за помощь! :)
|
|
|
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-05 15:58:28.103333
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
АнтонММФ, еще не плохо было бы посмотреть, что принимаешь в качестве переменной id, прежде чем вставлять ее в SQL запрос.
|
|
|
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 запрос. Это ОБЯЗАТЕЛЬНО !!!
|
|
|
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 ничего не выводится… я так понимаю, что никакого отсечения не происходит?
|
|
|
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-07 14:16:50.530000
|
|
|
Панда
Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000
|
а че бы оно происходило? функция str_replace отсекает тока те символы которые ты передал. если нужна регулярка то preg_replace
|
|
|
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-07 14:19:28.350000
|
|
|
Панда
Сообщений: 232
Оценки: 0
Присоединился: 2008-03-05 07:38:35.890000
|
думаю что для тя подойдет \D отсечет все кроме цифр
|
|
|
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-07 15:50:00.780000
|
|
|
Cep}|{
Сообщений: 1396
Оценки: 0
Присоединился: 2007-06-26 01:11:51.416666
|
так, $id=preg_replace("|[^0-9-]+|s", "", $id); или так $id=(is_numeric($id)) ? $id:'';
|
|
|
RE: Как запись из базы передать переменной скрипту (PHP и MySQL) - 2009-01-07 19:10:31.330000
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
Парни, все гораздо проще. Жесткое приведение к типу - наиболее быстрое и безопасное. $id=(int)$_REQUEST['id'];
|
|
|
|
|