Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.01.2017, 21:59   #1
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье Warning: mysql_num_rows() expects parameter 1 - при передаче символов

Здравствуйте!
Подскажите пожалуйста, почему когда через url передаются только цифры, ошибок нет, но, когда в строке присутствуют другие символы, выходит такая ошибка:


Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\Programming\xampp\htdocs\shop\ac tivation.php on line 12


PHP код:
<?php
    
include("blocks/db_connect.php");
    include(
"functions/functions.php");    

$msg '';
if(!empty(
$_GET['code']) && isset($_GET['code']))
{
    
$code=clear_string($_GET['code']);

    
$c=mysql_query("SELECT id FROM reg_user WHERE email_active_code=$code");

    if(
mysql_num_rows($c) > 0)
    {

        
$count=mysql_query("SELECT * FROM reg_user WHERE email_active_code=$code and email_status='unconfirme'");

        if(
mysql_num_rows($count) > 0)
        {
        
mysql_query("UPDATE reg_user SET email_status='confirm' WHERE email_active_code='$code'");
        
$msg="Ваш e-mail успешьно подтвержден";    
        
$reg_mess_class 'reg_message_good';
        }
        else
        {
          
$msg ="Ваш e-mail уже подтвержден";
        
$reg_mess_class 'reg_message_good';
        }

    }
    else
    {
    
$msg ="Неверный код активации.";
    
$reg_mess_class 'reg_message_error';
    }

}
        
?>
Женя32 вне форума Ответить с цитированием
Старый 27.01.2017, 09:12   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

да наверное потому что поле - email_active_code имеет числовой тип, и при попытке сравнения с символами запрос дает ошибку - но у вас этот случай не предусмотрен (вывода ошибок запроса), кроме того, думаю ваш код небезопасен для SQL инъекций.
Не знаю что там clear_string у вас творит, но если вместо него использовать intval() то на выходе всегда будет число и ваша ошибка исчезнет
ADSoft вне форума Ответить с цитированием
Старый 27.01.2017, 11:40   #3
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
Счастье

Цитата:
Сообщение от ADSoft Посмотреть сообщение
да наверное потому что поле - email_active_code имеет числовой тип, и при попытке сравнения с символами запрос дает ошибку - но у вас этот случай не предусмотрен (вывода ошибок запроса), кроме того, думаю ваш код небезопасен для SQL инъекций.
Не знаю что там clear_string у вас творит, но если вместо него использовать intval() то на выходе всегда будет число и ваша ошибка исчезнет
Нет, поле email_active_code - символьный тип.

clear_string:

PHP код:
<?php

function clear_string($cl_str)
  {
    
$cl_str strip_tags($cl_str);
    
$cl_str mysql_real_escape_string($cl_str);
    
$cl_str trim($cl_str);  
    
    return 
$cl_str;
     
  }

?>
Изображения
Тип файла: jpg tdb.jpg (103.6 Кб, 122 просмотров)
Женя32 вне форума Ответить с цитированием
Старый 27.01.2017, 11:59   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

строковые значения должны быть в кавычках:

Код:
$c=mysql_query('SELECT id FROM reg_user WHERE email_active_code="'.$code.'"'); 
if($c && (mysql_num_rows($c) > 0)) 
.....
от библиотеки mysql нужно отказываться, она уже устарела (в PHP7.x её совсем уже убрали),
переходите на библиотеку mysqli или PDO
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.01.2017, 12:41   #5
Женя32
Форумчанин
 
Регистрация: 12.09.2008
Сообщений: 621
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
строковые значения должны быть в кавычках:

Код:
$c=mysql_query('SELECT id FROM reg_user WHERE email_active_code="'.$code.'"'); 
if($c && (mysql_num_rows($c) > 0)) 
.....
от библиотеки mysql нужно отказываться, она уже устарела (в PHP7.x её совсем уже убрали),
переходите на библиотеку mysqli или PDO
Большое спасибо!!!
Женя32 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in D:\Server\OpenServer\domains\Login\ page\page2. quarty PHP 49 21.07.2016 18:15
Ошибка Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource Leks123 PHP 42 16.08.2013 00:06
Warning: trim() expects Dante5 PHP 10 16.03.2013 02:21
mysql_fetch_array() expects parameter 1 to be resource, boolean given in xew PHP 3 08.10.2011 12:23
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in.... Andruha10 PHP 13 12.12.2010 00:53