使用PHP if / else值的问题

时间:2016-07-13 00:26:36

标签: php if-statement

这是我的代码的相关部分:

$json = file_get_contents('php://input');

$obj = json_decode($json, true);
$device_id =$obj['device_id'];
$num =$obj['sensor_value'];
$sensor_value =(int)$num;


if ($sensor_value > 100){
    $sql = "INSERT INTO rr_emergency (device_id,sensor_value) VALUES('$device_id','$sensor_value');";
    $result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
}
else {

    $sql = "INSERT INTO general_logging (device_id,sensor_value) VALUES('$device_id','$sensor_value');";
    $result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
}

else语句可以正常工作。但是,当$sensor_value大于100时,我的语句的if部分永远不会触发。我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

作为语言构造的if/else极不可能随机破坏。但是,您可以做一些事情来确定您是否按照自己的想法行事:

$json = file_get_contents('php://input');

$obj = json_decode($json, true);
$device_id =$obj['device_id'];
$num =$obj['sensor_value'];
$sensor_value =(int)$num;

echo "num=$num\n"; //Are you actually getting a value from $obj?
echo "sensor_value=$sensor_value\n"; //Compare to num. Is it being cast correctly?

if ($sensor_value > 100){
    echo "Inside 'True' clause\n";
    try {
      $sql = "INSERT INTO rr_emergency (device_id,sensor_value) VALUES('$device_id','$sensor_value');";
      $result = $dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    } catch (Exception $e) {
      echo "Caught exception trying to execute sql: ", $e->getMessage(), "\n";
    }
}
else {
  ...
}

通过执行这些操作,我们确认所有内容都按预期运行 。这可能会揭示问题。

关于投射的说明

要从字符串转换为整数,您应该使用intval

$sensor_value = intval($num);