[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Ошибка в скрипте
mid
function sql($sql){
@ mysql_query($sql) or die('<h4>Не вышло выполнить <i>SQL</i> запрос <b>[ <font color="red">'.$sql.'</font> ]</b></h4>');
}


function user(){
sql("DELETE FROM `online` WHERE `vizit` < SUBTIME(NOW(), '0:05:0')");
if($_SESSION['id'] != '')
{
$id = $_SESSION['id'];
$date = date("H:i:s");
$mid = mysql_fetch_array(sql("SELECT `vizit` FROM `online` WHERE `iduser`='".(int)$id."' LIMIT `1`")); /// Здесь ошибка
if($mid['vizit'] != '')
{
sql("UPDATE `online` SET `vizit`='".$date."' WHERE `iduser`=".(int)$id."");
}
else
{
sql("INSERT INTO `online` (`vizit`, `iduser`) VALUES ('".$date."', ".(int)$id.")");
}
}

}




Спустя 2 минуты, 35 секунд (25.01.2012 - 11:13) alex12060 написал(а):

function sql($sql){
return @mysql_query($sql) or die('<h4>Не вышло выполнить <i>SQL</i> запрос <b>[ <font color="red">'.$sql.'</font> ]</b></h4>');
}

Спустя 1 минута, 5 секунд (25.01.2012 - 11:14) mid написал(а):
alex12060, не в этом дело!

Спустя 2 минуты, 54 секунды (25.01.2012 - 11:17) alex12060 написал(а):
mid

Да? В чем же?

Спустя 3 минуты, 41 секунда (25.01.2012 - 11:21) mid написал(а):
Вот я и спрашиваю.Все запросы кроме этого

SELECT `vizit`
FROM `online`
WHERE `iduser`='(int)$id'
LIMIT `1`

работают!
И без пользовательской пробовал делать этот sql запрос!
Нихрена.А в функции sql и возвращать ничего не надо!


Спустя 1 минута, 18 секунд (25.01.2012 - 11:22) alex12060 написал(а):
Цитата
А в функции sql и возвращать ничего не надо!


А ты проверь и потом скажи, верно ли ты думаешь или я все-же прав?

А потом я тебе кину пару ссылок на мануал.

Спустя 2 минуты, 40 секунд (25.01.2012 - 11:25) alexbel2404 написал(а):
у тебя для mysql_fetch_array функция sql должна вернуть результат, так что ставь return.

Спустя 2 минуты, 39 секунд (25.01.2012 - 11:27) mid написал(а):
alex12060, я уже проверил давно,нихрена не работает не с return ни с чем!!!Я ещё до того как сюда выложить ставил этот return чертов!
И написал что не в этом дело!
Не нужно мне ссылок я и сам прекрасно знаю про пользовательские функции,и return в частности.Ну если без него работает.Тем более что у меня только в одном запросе вернуть надо,который и не работает!Ну и просто если ввести mysql_query(запрос) тоже не рабит!

Спустя 1 минута, 12 секунд (25.01.2012 - 11:29) mid написал(а):
Конкретна с запросом что-то!

Спустя 2 минуты, 3 секунды (25.01.2012 - 11:31) mid написал(а):
$mid = mysql_fetch_array(mysql_query("SELECT `vizit` FROM `online` WHERE `iduser`='".(int)$id."' LIMIT `1`"));

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\subdomain\functions.php on line 24

Убедились что не функции sql дело?а?и ставил, ещё раз повторюсь, RETURN!

Спустя 2 минуты, 26 секунд (25.01.2012 - 11:33) mid написал(а):
И сразу напишу,а то наверно сидите и думаете что я чайник!База данных есть,подключение есть.Все есть!И по теории должно работать,а так хрен.Хочу заметить что остальные запросы работают!

Спустя 1 минута, 55 секунд (25.01.2012 - 11:35) alex12060 написал(а):
Окей, все равно у тебя без return работать не будет :)
И не психуй.

Ну а если уж действительно в запросе ошибка, то могу тебе предложить пару вариантов.

SELECT `vizit` FROM `online` WHERE `iduser`= ".(int)$id." LIMIT 1


А вообще, я бы сделал твою функцию как миниимум такой:


function sql($sql) {
if (!empty($sql)) {
$res = mysql_query($sql);

if (mysql_num_rows($res) > 0) {
return $res;
} else {
die('We have 0 results');
}
}
else {
die('Attempt to execute empty query!');
}
}



Но а вообще, должно выозвращать при неудаче не строки с умиранием, а false, но это так, для дебажинга.

Спустя 1 минута, 8 секунд (25.01.2012 - 11:36) alexbel2404 написал(а):
может быть LIMIT 1, без обратных кавычек? в них обычно указываются название полей и таблиц.

Спустя 1 минута, 11 секунд (25.01.2012 - 11:37) alex12060 написал(а):
Цитата
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\test1.ru\subdomain\functions.php on line 24


Это говорит о том, что mysql_query() вернула false - значит, ошибка или пустой результат.

Спустя 4 минуты, 47 секунд (25.01.2012 - 11:42) mid написал(а):
alex12060, я понимаю что ошибка или пустой результат.у меня запросы на удаление,редактирование,добавление..что для них нужно возвращать?а на этот запрос Mysql_query написал!ъ
Все,спс.Говорил же ошибка в запросе.И с моей функцией sql тоже рабит и без return..Но я сейчас для запросов SELECT другую функцию напишу,с RETURN!Всем спс.+1 в карму

Спустя 5 минут, 37 секунд (25.01.2012 - 11:48) alex12060 написал(а):
mid

А по мне, проще сделать флаг на возвращение результата в одной функции.


function sql($sql, $return = false) {
# ...
if ($return)
return $res;
}

Спустя 2 часа, 16 минут, 36 секунд (25.01.2012 - 14:04) mid написал(а):
alex12060, я без флажков обошелся:


function sql($sql){
$type = explode(' ', $sql);
$type = $type['0'];

if($type == 'SELECT')
{
$ok = @mysql_fetch_array(mysql_query($sql)) or die('<h4>Не удалось выполнить <i>SQL</i> запрос [ <font color="red">'.$sql.'</font> ]</h4>');
return $ok;
}
else
{
@mysql_query($sql) or die('<h4>Не удалось выполнить <i>SQL</i> запрос [ <font color="red">'.$sql.'</font> ]</h4>');
}
}


Спустя 6 минут, 41 секунда (25.01.2012 - 14:11) inpost написал(а):
mid
Как ужасно!
Тебе же показали, как правильно... зачем лепить mysql_fetch_array, когда у тебя ошибка может быть на уровне mysql_query() ? И неправильные запросы надо логировать.

Спустя 42 минуты, 44 секунды (25.01.2012 - 14:54) Гость_mid написал(а):
inpost,так будет правильно?
<?php
function
sql($sql){
$type = explode(' ', $sql);
$type = $type['0'];

if($type == 'SELECT')
{
$mysql_Q = @mysql_query($sql) or die('<h4>Не удалось выполнить <i>SQL</i> запрос [ <font color="red">'.$sql.'</font> ]</h4>');
$ok = @mysql_fetch_array($mysql_Q);
return $ok;
}
else
{
@mysql_query($sql) or die('<h4>Не удалось выполнить <i>SQL</i> запрос [ <font color="red">'.$sql.'</font> ]</h4>');
}
}

Спустя 4 минуты, 4 секунды (25.01.2012 - 14:58) inpost написал(а):
Гость_mid
Нет, собаки лишние.

Спустя 1 минута, 6 секунд (25.01.2012 - 14:59) Guest написал(а):
А для чего вообще собаки нужны?Я просто увидел у кого-то..У винстона вроде,и начал ставить на все запросы biggrin.gif

Спустя 44 секунды (25.01.2012 - 15:00) alex12060 написал(а):
mid

жаль, не стать тебе хорошим программистом...

Спустя 1 минута, 33 секунды (25.01.2012 - 15:01) Guest написал(а):
alex12060, ну чтож теперь:)
Ты с битвы экстрасенсов? biggrin.gif

Спустя 2 минуты, 9 секунд (25.01.2012 - 15:03) alex12060 написал(а):
Guest

А зачем быть экстрасенсом, когда тут все видно как на ладони.

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

Спустя 2 минуты, 4 секунды (25.01.2012 - 15:05) Guest написал(а):
alex12060, кому как больше нравится,правильно?)
Судить по тому,что кто-то пытается своими знаниями решить проблему мне кажется смешным:)
Ну и ладно:)У каждого свое мнение)

Спустя 3 минуты, 6 секунд (25.01.2012 - 15:09) alex12060 написал(а):
Guest

Кому как больше нравится?
Окей, у меня больше нет вопросов.
Вот когда тебя начнут пинать за тормоза и миллиарды ошибок в проектах, за разработку которых ты будешь получать деньги, тогда вспомнишь меня smile.gif
удачи.

Спустя 3 минуты, 17 секунд (25.01.2012 - 15:12) Guest написал(а):
alex12060
Да ладно тебе,я не упертый баран:)
Я просто не умею работать с флагами,поэтому прислал как я сделал,чтобы тоже проверили.Я не думаю что из-за одной функции у меня все будет тормозить biggrin.gif

Спустя 35 минут, 45 секунд (25.01.2012 - 15:48) inpost написал(а):

 ! 

М
Если я дал бан, то это для того, чтобы ты сидел в бане и исправлялся!
Не заставляй меня принимать более жесткие меры по бану. Итак дал маленький! Отсидишь - возвращайся
inpost


_____________
По любому вопросу : programmer-php@mail.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.