Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Ф-ция для нахождения элемента в базе MySQL


Автор: HappyMan 30.10.2004, 20:22
Сабж + SomeFunction( 'people', 'women', 'name', 'alisa' )

'people '- название базы
'women' - название таблицы в базе
'name' - название поля в таблице :)
'alisa' - имя (данные), существование которого мы должны проверить.

Возвращает TRUE или FALSE (существует или нет)

З.Ы БУДЕМ СЧИТАТЬ ЧТО ПОЛЕ 'name' УНИКАЛЬНО.....

заранее спасибо :cool

Автор: Secandr 31.10.2004, 10:04
HappyMan А зачем такой изврат? Обычный селект чем не нравится?

Автор: Song 31.10.2004, 12:18
HappyMan
т.е. ты хочешь внутри этой функции каждый раз подключаться к базе people ?

Автор: Secandr 31.10.2004, 13:03
Поясни задачу, где и для чего это применяться будет?

Автор: Black Rabbit 31.10.2004, 13:51
Действительно, почему бы тебе не воспользоваться SELECT-ом и функциейmysql_num_rows()

Автор: HappyMan 31.10.2004, 22:11
ПОЯСНЯЮ!:

Song
да! т.к в функцию один раз написал и все! а потом просто нужные параметры укажываешь и она делает свое дело!


Black Rabbit и
Secandr

просто так легче! меньше кода! красивее выглядит.

Пример кода с этой ф-цией:
Цитата
if (SomeFunction( 'people', 'women', 'name', 'alisa' ) ) {echo "User with such name is already registered!"; } :)


Пример кода без этой функции:
Цитата

$hostname = "127.0.0.1";
$username = "root";
$password = "";
$dbname = "people";

mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbname) or die(mysql_error());
mysql_connect("$hostname","$username","$password");

$sql = "SELECT * FROM `women` WHERE $name = 'alisa'";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
    $mRes = $row["name"];
}
mysql_free_result($result);

if ($mRes == "alisa" ) { echo "-----------" };


Вроде так.

Так как легче? А если учесть что мне нужно использовать эту ф-цию не один раз.......

Так есть такая фу-ция? Я бы сам написал, на чувствую если я напишу что потом..... Вобщем.... буду рад если какой-нить гуру напишет...................а не я ламо.......

Автор: Ignat 1.11.2004, 13:48
Написать-то не проблема, вот только коннектиться каждый раз не стоит к базе.

Автор: HappyMan 1.11.2004, 19:35
Ignat
А что в этом такого? много ресурсов требует :p ? как тогда решить мою задачу?
Добавлено @ 19:38
ну чтобы тыщу раз этот кусок кода не писать.....

Автор: Ignat 1.11.2004, 20:12
Пользоваться существующим коннектом.

Автор: HappyMan 1.11.2004, 20:52
Ignat
так у меня модулей много. Конект сохраняется для всех модулей?
Добавлено @ 20:54
т.е каждый раз заново не надо писать:
Цитата

$hostname = "127.0.0.1";
$username = "root";
$password = "";
$dbname = "people";

mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
mysql_select_db($dbname) or die(mysql_error());
mysql_connect("$hostname","$username","$password");


Один раз написал гденить(в модуле который загружается всегда) и все? или как?
Добавлено @ 20:56
Под "модулем" я понимаю ПХП Скрипт

Автор: Ignat 1.11.2004, 21:06
Цитата(HappyMan @ 1.11.2004, 20:52)

Один раз написал гденить(в модуле который загружается всегда) и все?

Именно!
Если, он инклюдится к каждому скрипту. В противном случае можно использовать mysql_pconnect();

Автор: HappyMan 1.11.2004, 22:09
Ignat

Кул! :p

А так можно:
В модуле с функциями:

<?

Connect k Baze

?>

function a1 {
$sql="SELECT FROM....";
...
}

function a2 {
$sql="SELECT FROM....";
...
}

и получается в теле функции уже не нада коннектится каждый раз?
Добавлено @ 22:11
дык почему нежелательно к базе коннектится каждый раз? :stena

Автор: Song 1.11.2004, 22:13
Как-то так: (тестировать лень)

Код
function query($base, $tablename, $field, $param, $value, $host = 'localhost', $username = 'root', $pass = '') {

$cid = mysql_pconnect($host,$username,$pass);
if ( !mysql_select_db($base, $cid) ) return FALSE;
$query_id = mysql_query("SELECT ".$field." FROM ".$tablename." WHERE ".$param."=".$value,$cid);
return mysql_num_rows($query_id);
}


Раз ф-ия должна инициировать всю последовательность действий (начиная от подключения к СУБД и заканчивая запросом), то разумней использовать pconnect.

Автор: HappyMan 2.11.2004, 20:51
Наконец-то нашел отличие! На всякий случай приважу сдесь:
Цитата

mysql_pconnect() работает аналогично mysql_connect() с двумя отличиями.

Во-первых, при соединении, функция пытается найти уже открытый (постоянный) указатель на тот же сервер с тем же пользователем и паролем. Если он найден, возвращён функцией будет именно он, вместо открытия нового соединения.

Во-вторых, соединение с SQL-сервером не будет закрыто, когда работа скрипта закончится. Вместо этого, оно останется рабочим для будущего использования (mysql_close() также не закрывает постоянные соединения)

Автор: HappyMan 18.11.2004, 21:43
Song
Лучше так (ато не пашет):

Код

...
$query_id = mysql_query("SELECT * FROM `$tablename` WHERE $param='$value', $cid);
...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)