繁体   English   中英

从mysql数组返回True / False

[英]Return True/False from a mysql array

我在这里有此查询:

function movement_performed_today($class_id, $client_id){
$class_id = (int)$class_id;
$client_id = (int)$client_id;

$query = mysql_query("SELECT COUNT(`movement`) FROM `completed_movements` WHERE `class_id` = '$class_id' AND `client_id` = '$client_id' AND `date` = CURDATE()");

$movement_performed = mysql_fetch_assoc($query);

print_r($movement_performed);   
}

返回以下内容:

Array ( 
[COUNT(`movement`)] => 0 
) 
Array ( 
[COUNT(`movement`)] => 0 
)

哪个是对的。 现在我想做这样的事情:

function movement_performed_today($class_id, $client_id){
$class_id = (int)$class_id;
$client_id = (int)$client_id;

$query = mysql_query("SELECT COUNT(`movement`) FROM `completed_movements` WHERE `class_id` = '$class_id' AND `client_id` = '$client_id' AND `date` = CURDATE()");

$movement_performed = mysql_fetch_assoc($query);

return (mysql_result($movement_performed['count'], 0) == 1) ? true : false; 
}

这样我就可以在while循环内调用此函数,如果它返回0 / false,它将把表单数据发布到db。 有人可以帮忙吗? 这是我尝试执行此功能的while循环:

if (empty($_POST)=== false){
$i = 0;
while (isset($_POST["first_name"][$i])) {
    $movement_data = array(   
    'user_id'       => $session_user_id,   
    'class_id'      => $class_id,   
    'class_name'    => $class_name,
    'client_id'     => $_POST['client_id'][$i],    
    'first_name'    => $_POST['first_name'][$i],   
    'last_name'     => $_POST['last_name'][$i],   
    'nickname'      => $_POST['nickname'][$i],   
    'order'         => $_POST['order'][$i],   
    'movement'      => $_POST['movement'][$i],   
    'rep_set_sec'   => $_POST['rep_set_sec'][$i],   
    'rest'          => $_POST['rest'][$i],   
    'date'          => $today   
    );  

   $movement_performed = movement_performed_today($class_id, $_POST['client_id']);
   foreach ($movement_performed as $performed){
   if($performed == false){
    completed_movement($movement_data);
    } // if performed
  } // foreach
   $i++; 
   } // while

} // if empty   

您的方法movement_performed_today返回一个布尔值。 没有可以循环播放的内容。 在主循环中进行检查。 您还知道信任来自_POST的用户输入不安全吗? mysql_query的使用已弃用,您需要查看使用PDO和绑定参数。

if (! empty($_POST)) {
    $i = 0;
    while (isset($_POST["first_name"][$i])) {
        $movement_data = array(   
        'user_id'       => $session_user_id,   
        'class_id'      => $class_id,   
        'class_name'    => $class_name,
        'client_id'     => $_POST['client_id'][$i],    
        'first_name'    => $_POST['first_name'][$i],   
        'last_name'     => $_POST['last_name'][$i],   
        'nickname'      => $_POST['nickname'][$i],   
        'order'         => $_POST['order'][$i],   
        'movement'      => $_POST['movement'][$i],   
        'rep_set_sec'   => $_POST['rep_set_sec'][$i],   
        'rest'          => $_POST['rest'][$i],   
        'date'          => $today);  

        //check not already performed today
        $isPerformed = movement_performed_today($class_id, $_POST['client_id']);

        //if not performed then do insert
        if(! $isPerformed) completed_movement($movement_data);    

        $i++; 
    }    
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM