Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проверка ячейки всех полей, в таблице.
 
 автор: AlexDIXI   (16.04.2008 в 07:39)   письмо автору
 
 

Привет всем!

Хочу реализовать следующее:

Если человек вводит урл http://localhost/phpsite/view_key.php?key=12345 И в базе (MySQL) найден этот ключ, то сообщаем ему (Ваш ключ (12345) найден в БД) или в противном случае, выводим тоже сообщение, только уже не true а false т.е. (Ваш ключ (1234) не найден в БД).

Я создал базу, в ней таблицу user, в которой 2 поля, первичный ключ (id) и key. Вставил в эту таблицу три раза разные ключи, например (12345,123456,1234567).
Но когда я ввожу http://localhost/phpsite/view_key.php?key=123456 то ключ не найден, до этого вводил 12345, и все прошло успешно я так понимаю что в mysql_fetch_array занеслось только первое поля. Проблему понял, только не знаю какой функцией ее разрешить.
Дело в том что как я выше уже сказал, в mysql_fetch_array заносится только первое поля, а как сделать так, что б проверялись все поля.


С уважением Александр.

   
 
 автор: Root   (16.04.2008 в 07:54)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 07:39)
 

проверяйте средствами MySQL

   
 
 автор: AlexDIXI   (16.04.2008 в 08:02)   письмо автору
 
   для: Root   (16.04.2008 в 07:54)
 

В том и дело. Я незнаю как проверить все сразу поля?

   
 
 автор: Root   (16.04.2008 в 08:08)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 08:02)
 

SELECT * FROM tbl_name WHERE key = 12345

   
 
 автор: AlexDIXI   (16.04.2008 в 08:23)   письмо автору
 
   для: Root   (16.04.2008 в 08:08)
 

Вы не правильно меня поняли.

У меня в базе много ключей. Я хочу проверять ключ переданный через адресную строку ($_GET), совпадает он с значением в базе или нет.
если совпал то вывести "true" если нет то "false".
Я написал скрипт. Но он проверяет только первое поле. Как сделать чтоб проверялись все поля?

   
 
 автор: Root   (16.04.2008 в 08:27)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 08:23)
 


<?php
$query 
"SELECT * FROM tbl_name WHERE key = $_GET[key]";
$res mysql_query($query);
if(
mysql_num_rows($res) > 0)
  echo 
"найден";
?>

   
 
 автор: AlexDIXI   (16.04.2008 в 10:00)   письмо автору
 
   для: Root   (16.04.2008 в 08:27)
 

>

><?php
>$query "SELECT * FROM tbl_name WHERE key = $_GET[key]";
>
$res mysql_query($query);
>if(
mysql_num_rows($res) > 0)
>  echo 
"найден";
>
?>
>


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\proxyc\test.php on line 6


код таблицы

# Дамп данных таблицы `user`
#

INSERT INTO `user` VALUES (1, '1');
INSERT INTO `user` VALUES (3, '2');
INSERT INTO `user` VALUES (4, '3')

   
 
 автор: Root   (16.04.2008 в 10:15)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 10:00)
 


<?php 
$query 
"SELECT * FROM tbl_name WHERE key = '$_GET[key]'"
$res mysql_query($query); 
if(
mysql_num_rows($res) > 0
  echo 
"найден"
?>

   
 
 автор: AlexDIXI   (16.04.2008 в 10:49)   письмо автору
 
   для: Root   (16.04.2008 в 10:15)
 

>

><?php 
>$query "SELECT * FROM tbl_name WHERE key = '$_GET[key]'"
>
$res mysql_query($query); 
>if(
mysql_num_rows($res) > 0
>  echo 
"найден"
>
?>
>


К сожалению, и с кавычками тот-же результат..

   
 
 автор: elenaki   (16.04.2008 в 11:02)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 10:49)
 

<?php  
$query 
"SELECT * FROM tbl_name WHERE key = '".$_GET["key"]."'";  
$res mysql_query($query);  
if(
mysql_num_rows($res) > 0)  
  echo 
"найден";  
?> 

   
 
 автор: AlexDIXI   (16.04.2008 в 11:28)   письмо автору
 
   для: elenaki   (16.04.2008 в 11:02)
 

>
<?php  
>$query "SELECT * FROM tbl_name WHERE key = '".$_GET["key"]."'";  
>
$res mysql_query($query);  
>if(
mysql_num_rows($res) > 0)  
>  echo 
"найден";  
>
?> 


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in z:\home\localhost\www\proxyc\test.php on line 6

   
 
 автор: AlexDIXI   (16.04.2008 в 11:31)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 11:28)
 

Неужели нет других вариантов - сделать проверку в таблице, на значение, которое данно через $_GET и если true, выводим верно.

   
 
 автор: elenaki   (16.04.2008 в 12:05)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 11:31)
 

<? echo "SELECT * FROM tbl_name WHERE key = '".$_GET["key"]."'";   ?>
- что пишет?

   
 
 автор: AlexDIXI   (16.04.2008 в 13:04)   письмо автору
 
   для: elenaki   (16.04.2008 в 12:05)
 

>
<? echo "SELECT * FROM tbl_name WHERE key = '".$_GET["key"]."'";   ?>
- что пишет?


SELECT * FROM user WHERE key = '1'


У меня в базе созданы

1
2
3

ключа

   
 
 автор: elenaki   (16.04.2008 в 13:13)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 13:04)
 

У меня в базе созданы
====================
в таблице user?

   
 
 автор: AlexDIXI   (16.04.2008 в 13:24)   письмо автору
 
   для: elenaki   (16.04.2008 в 13:13)
 

Да.

   
 
 автор: elenaki   (16.04.2008 в 13:41)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 13:24)
 

попробуйте убрать условие WHERE, а после mysql_query($query) дописать or die(mysql_error());
есть возможность проверить запрос не в скрипте, а в каком-нибудь интерфейсе для базы, вроде
PHPmyAdmin?

   
 
 автор: AlexDIXI   (16.04.2008 в 14:01)   письмо автору
 
   для: elenaki   (16.04.2008 в 13:41)
 

>попробуйте убрать условие WHERE, а после mysql_query($query) дописать or die(mysql_error());
>есть возможность проверить запрос не в скрипте, а в каком-нибудь интерфейсе для базы, вроде
>PHPmyAdmin?


Вот этот код выводит всегда, "найден" без кавычек.

$query = "SELECT * FROM user"; 
$res = mysql_query($query) or die(mysql_error()); 
if(mysql_num_rows($res) > 0) 
  echo "найден";


Но мне нужно, если человек ввел test.php?key=12345 и это число 12345 есть в таблице, то вывести найден. А если нет то Не найден.


А код, что выше, всегда выводит "найден". Даже просто если ввести test.php

   
 
 автор: AlexDIXI   (16.04.2008 в 14:10)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 14:01)
 

>есть возможность проверить запрос не в скрипте, а в каком-нибудь интерфейсе для базы, вроде
>PHPmyAdmin?

Это как? PHPmyAdmin есть...

   
 
 автор: Root   (16.04.2008 в 17:38)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 14:10)
 


<?php  
$query 
"SELECT * FROM tbl_name WHERE `key` = '$_GET[key]'";  
$res mysql_query($query);  
if(
mysql_num_rows($res) > 0)  
  echo 
"найден";  
?>

   
 
 автор: elenaki   (16.04.2008 в 18:35)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 14:01)
 

надо было проверить запрос без условий. т.е. разобрать полученный результат mysql_fetch_array(), вывести результаты, посмотреть ЧТО на самом деле в базе.... или проверить, как выполняется запрос в ПМА. если в запросе ошибок нет, значит, или условие не выполняется или таблицы нет, или поля с таким значением или... черт знает что...

   
 
 автор: Root   (16.04.2008 в 18:54)   письмо автору
 
   для: elenaki   (16.04.2008 в 18:35)
 

наверное из-за "key", зарезервированное слово

   
 
 автор: elenaki   (16.04.2008 в 19:41)   письмо автору
 
   для: Root   (16.04.2008 в 18:54)
 

точно. а вот если бы он проверил, как просили, в каком-нибудь интерфейсе для базы, это сразу бы выяснилось. мне просто лениво было делать у себя таблицу и проверять запрос...

когда-то я тоже долго мучалась со словом order... даже распечатала список зарезервированных слов. но потом забыла. обычно даю столбцам имена на греческом (латинскими буквами), таких слов MySQL точно не знает :)

   
 
 автор: AlexDIXI   (16.04.2008 в 21:09)   письмо автору
 
   для: elenaki   (16.04.2008 в 18:35)
 

>надо было проверить запрос без условий. т.е. разобрать полученный результат mysql_fetch_array(), вывести результаты, посмотреть ЧТО на самом деле в базе.... или проверить, как выполняется запрос в ПМА. если в запросе ошибок нет, значит, или условие не выполняется или таблицы нет, или поля с таким значением или... черт знает что...

Все верно выводит
1
2
3

   
 
 автор: elenaki   (16.04.2008 в 21:18)   письмо автору
 
   для: AlexDIXI   (16.04.2008 в 21:09)
 

и не ругается на слово key? вообще-то, если оно в обратных кавычках, то должно прокатить...

   
 
 автор: Root   (16.04.2008 в 21:24)   письмо автору
 
   для: elenaki   (16.04.2008 в 21:18)
 

>и не ругается на слово key? вообще-то, если оно в обратных кавычках, то должно прокатить...
там запрос без условия и соответственно без "key".
А в обратных кавычках прокатит :)

   
 
 автор: AlexDIXI   (17.04.2008 в 00:15)   письмо автору
 
   для: elenaki   (16.04.2008 в 18:35)
 

Заработало :)!

Спасибо огромное ребятам и если я правильно понял девчатам тоже.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования