2013-03-17 2 views
1

사용 가능한 현금에 대한 쿼리 결과를 주가와 비교하려고하는데 작동하지 않고 그 이유를 모르겠습니다. 나는 그들이 왜 $ 현금$ 값이 유효한 숫자라고 생각하기 때문에 그것이 작동하지 않는 이유를 이해하지 못합니다. 이것이 나에게 문제가되는 선이다.PHP에서 쿼리 결과를 비교할 수 없습니다

if($cash < $value) 

이 전체 파일

<?php 

//configuration 
require("../includes/config.php"); 



//query user's portfolio 
if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 

    // Insert the stock into their portfolio 
    if(preg_match("/^\d+$/", $_POST["shares"])==false){ 

     apologize("Please enter full share numbers"); 

    }else{ 

    $cash = query("SELECT cash FROM users WHERE id = ?", $_SESSION["id"]); 

    // lookup stock 
    $stock = lookup($_POST["symbol"]); 

    // calculate total sale value (stock's price * shares) 
    $value = $stock["price"] * $_POST["shares"]; 

    if($cash < $value){ 
     apologize("you do not have enough money"); 
    }else{ 


     //insert stock into database  
     query("INSERT INTO shares 
      (id, symbol, shares) 
      VALUES (?, ?, ?) 
      ON DUPLICATE KEY UPDATE shares = shares + VALUES(shares)", 
      $_SESSION["id"], strtoupper($_POST["symbol"]),$_POST["shares"] 
      ); 

     // substract the share value from cash 
     query("UPDATE users SET cash = cash - ? WHERE id = ?", $value, $_SESSION["id"]); 

     redirect("/"); 
     } 

    } 
} 
else 
{ 


// render portfolio 
render("buy_search.php", ["title" => "Buy"]); 
} 
?> 

이것은에게 당신이 필요로 쿼리 기능

function query(/* $sql [, ... ] */) 
{ 
    // SQL statement 
    $sql = func_get_arg(0); 

    // parameters, if any 
    $parameters = array_slice(func_get_args(), 1); 

    // try to connect to database 
    static $handle; 
    if (!isset($handle)) 
    { 
     try 
     { 
      // connect to database 
      $handle = new PDO("mysql:dbname=" . DATABASE . ";host=" . SERVER, USERNAME, PASSWORD); 

      // ensure that PDO::prepare returns false when passed invalid SQL 
      $handle->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
     } 
     catch (Exception $e) 
     { 
      // trigger (big, orange) error 
      trigger_error($e->getMessage(), E_USER_ERROR); 
      exit; 
     } 
    } 

    // prepare SQL statement 
    $statement = $handle->prepare($sql); 
    if ($statement === false) 
    { 
     // trigger (big, orange) error 
     trigger_error($handle->errorInfo()[2], E_USER_ERROR); 
     exit; 
    } 
    // execute SQL statement 
    $results = $statement->execute($parameters); 
    // return result set's rows, if any 
    if ($results !== false) 
    { 
     return $statement->fetchAll(PDO::FETCH_ASSOC); 
    } 
    else 
    { 
     return false; 
    } 
} 
+1

'query' 함수는 어디에 정의되어 있습니까? 내가 정수,하지만 배열 또는 개체를 반환하지 않습니다 내기. – fuzic

+0

var_dump ($ cash) 및 var_dump ($ value)를 수행하십시오. 출력을 보여주세요. – Danack

+0

덤프 ($ 현금)이 배열 ( [0] => 배열 ( [현금] => 0.00 ) ) 덤프 ($ 값) 이중을 제공을 제공한다. – tironci

답변

1
if ($cash[0]['cash'] < $value) 

디버깅 의견에 따르면,이이어야한다 배열 색인의 배열 색인 cash에 액세스하십시오.. 이 형식을 원하지 않으면 중첩 된 배열을 사용할 필요가 없도록 쿼리 결과가 반환되는 방법을 조사해야합니다.

0

$ 현금은 거의 확실하지 않으며 숫자 또는 스칼라 값이 아닙니다.

쿼리는 아마도 결과 개체 또는 배열의 배열을 반환합니다.

관련 문제