تالار گفتمان nCIS.ir

نسخه‌ی کامل: مشکل این کیوری چیه که چیزی برنمیگردونه؟
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان


مشکل این کیوری چیه که هیچ مقداری برنمیگردونه؟
$selectAttempt= Attempts::model()->findAll(array(
    'select'=>'COUNT(*)',
    'condition'=>'ip=:Ip',
          'params'=>array(
                  ':Ip'=>$_SERVER['REMOTE_ADDR'],
           ),
));
وقتی اینجوری مینویسم مقادیرو دارم:
$selectAttempt= Attempts::model()->findAll(array(
    'select'=>'ip',
    'condition'=>'ip=:Ip',
          'params'=>array(
                  ':Ip'=>$_SERVER['REMOTE_ADDR'],
           ),
));

متشکرم
من با این model کوئری زدن شما زیاد آشنا نیستم، نمیدونم ولی فکر میکنم باید توی کوئری بعد از count بنویسی as total و بعد
کد پی‌اچ‌پی:
<?php 
$row
['total']
رو بگیری.
راستی این همون لینک دومیه که من بهت دادم رو داری ادیت میکنی، نه؟
چون منم همین الان دارم همین سیستم login attempt رو پیاده میکنم، کدوم لینک که بهت دادم بهتر بود؟ اولیه که انگار خیلی قدیمی بود الان که خودم نگاه کردم
من این کارو کردم و مشکل حل شد:
$selectAttempt= Attempts::model()->findAll(array(
        'select'=>'ip',
        'condition'=>'ip=:Ip',
         'params'=>array(
               ':Ip'=>$_SERVER['REMOTE_ADDR'],
          ),
));
$count= count($selectAttempt);
آره این همونه و دارم برا Yii بازسازی میکنم.
لینک دوم بهتر بود.
اینطوری کار کنید:
$selectAttempt = Attempts::model()->count('ip=:ip', array(':ip' => $_SERVER['REMOTE_ADDR']));
بازم مشکل در این کیوری:
Attempts::model()->deleteAll('ip=:Ip AND when<=:When',array(':Ip'=> $_SERVER['REMOTE_ADDR'], ':When'=> time()+1800));
نقل قول:خطای CDbCommand در اجرای SQL statement: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'when<=1435828845' à la ligne 1. The SQL statement executed was: DELETE FROM `attempts` WHERE ip=:Ip AND when<=:When
when رو داخل `` نوشتم مشکل حل شد:
Attempts::model()->deleteAll('ip=:Ip AND ‍`when`<=:When',array(':Ip'=> $_SERVER['REMOTE_ADDR'], ':When'=> time()+1800));
از شناسه های داخلی و دستوری MySQL بعنوان اسامی فیلدها و جداول و دیتابیس و... استفاده نکنید. درصورتی که اینکار رو انجام بدین، مجبورین توی کوئریها اسامی فیلدها و... رو توی Backquote و مقادیر رو توی SingleQuote بگذارین تا با دستورات و شناسه های خودش اشتباه نگیره.