2016-11-29 6 views
0

以下は私のPHPコードです。私はデータベースから値を取得し、それらを最も近い10に丸める(上向きのみ)ようにしています。この列のデータベース内のすべての値は整数です。PHP - データベースから取得したデータに天井関数を使用しようとしたときにエラーが発生しました

<?PHP 
    @$Teach_ID = $_POST['txtteachID']; 
    @$Class_ID = $_POST['txtclass']; 
    @$BookingDate = $_POST['txtbookingdate']; 
    @$BookingPeriod = $_POST['txtperiod']; 

    require_once('../BookingSystem/DBconnect.php'); 

    $capacity = 'SELECT ClassSize FROM classes WHERE ClassID = 1'; 
     $result = $dbh->query($capacity); 
     $result = (int)$result; 
    function ceiling($number, $significance = 1) 
     { 
      return (is_numeric($number) && is_numeric($significance)) ? (ceil($number/$significance)*$significance) : false; 
     } 
    } 

    if ($result->num_rows > 0) { 
     echo ceiling($result, 10); 
    } 
    ?> 

エラー説明

enter image description here

私は明らかに何かが足りないのですか?

答えて

0

これはできません$result = (int)$result;。あなたは各行に苛立つし、データを抽出する必要があります。

+1

コメントだ完全な答えは、例えば反復処理する方法を私たちに示し、あなたが行うことができない理由を詳細に説明:)ください'(int)$ result;':p – Bobot

+1

申し訳ありません。これを完全な答えに編集する。 –

1

変数$resultmysqli_resultオブジェクト)をループして別のエントリを取得する必要があります。

使用mysqli_fetch_assocこのようなもので終わる値、取得するには:

$capacity = 'SELECT ClassSize FROM classes WHERE ClassID = 1'; 
$result = $dbh->query($capacity); 
function ceiling($number, $significance = 1) 
{ 
    return (is_numeric($number) && is_numeric($significance)) ? (ceil($number/$significance)*$significance) : false; 
    } 
} 

while ($row = $result->fetch_assoc()) { 
    // if ($result->num_rows > 0) { /* I think this condition is not needed anymore */ 
     $value = intval($row['ClassSize'], 10); // will convert the string from database to an int in base 10 
     echo ceiling($value, 10); /* I suppose you wanted to use the ClassSize key since it's the one you query */ 
    // } 
} 
+0

Worked。ありがとう。 –

関連する問題