1

自動散水用の PHP カウントダウンを作成しようとしています。これを毎分 crontab で実行し、自動的に散水を停止します。コードは次のとおりです。

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
include 'php_serial.class.php';
require_once 'login.php';
//connect to server
$con = mysqli_connect($server,$username,$password);
if(!$con){
    die("Failed to connect:" . mysqli_connect_error());
}
else {
    //check database connection
    $open_db = mysqli_select_db($con,$db);
    if(!$open_db){
        die("Cannot connect to vatten database" . mysqli_error());
        }
        }
        //check time_left
$sql = "SELECT time_left FROM `info`";
$time_left = mysqli_query($con,$sql);
$sql2 = "SELECT last_sent FROM `info`";
$last_sent = mysqli_query($con,$sql2);

if(!$time_left) {
die("Database access failed" . mysqli_error($con));
}
if($time_left >0) { // Error 1 here
    $time_left = $time_left-1; // Error 2 here
    mysqli_query($con, "UPDATE info SET time_left=$time_left");
    }
    elseif($time_left <1 && $last_sent !== "[LOOOOOO]") {
            $serial = new phpSerial;
            $serial->deviceSet("/dev/ttyUSB0");
            $serial->confBaudRate(1200);
            $serial->confParity("none");
            $serial->confCharacterLength(8);
            $serial->confStopBits(1);
            $serial->deviceOpen();
            $serial->sendMessage("[LOOOOOO]");
            mysqli_query($con, "UPDATE info SET time_left=$time_left");
        }
mysqli_close($con);
?>

だから私が得ているエラーは

注意: クラス mysqli_result のオブジェクトは、27 行目の /var/www/vatten/check.php で int に変換できませんでした

そして、28行目以外は同じようなものです。

それとは別に、データベースの「time_left」を0にリセットします

4

3 に答える 3

4

ステートメント

$time_left = mysqli_query($con,$sql);

タイプ mysqli_result のオブジェクトを返します。結果の num_rows プロパティを使用します。それは整数です。

if($time_left->num_rows > 0) {
于 2013-08-25T17:04:10.390 に答える
0

異なるデータ型を比較しているので、php 変数の 20 行目にphpリソースがあります$time_left

$time_left = mysqli_query($con,$sql);//line 20

27行$time_left目で(phpリソース)とint 0を比較しています

if($time_left >0) { // Error 1 here //line 27
于 2016-01-16T22:35:16.467 に答える