2012-09-05 3 views
0

에서 모든 값을 얻으려면 내가 다음 코드를 가지고, mysqli 객체를 생성하는 쿼리 준비 :어떻게 준비된 명령문의 쿼리 결과

$GLOBALS['DB_something'] = new mysqli('$database_hostname','$database_username','$database_password','$database_default'); 
    $GLOBALS['DB_prepared_get'] = $GLOBALS['DB_something']->prepare("SELECT ? from database_name WHERE hash=?"); 

하고 다음 코드를 얻을하고 결과를 표시 할 수 있습니다. 필자는 최근에 준비된 선언문에 들어 가지 않았기 때문에 PHP가 아닌 specialy가 결과를 얻는 방법을 모르겠다.
준비된 문없이 코드를 작성하면 작동하지만 여러 가지 이유로 준비된 문으로 다시 작성해야합니다.

$GLOBALS['DB_prepared_get']->bind_param('ss', $arg, $index); 
$GLOBALS['DB_prepared_get']->execute(); 
$GLOBALS['DB_prepared_get']->bind_result($result); # this is an array of values 

$GLOBALS['DB_prepared_get']->fetch();  
      # below this, I don't know if it's ok    
      if(mysql_num_rows($result) == 0){ 
       return "0"; 
      } 

      else{ 
       while($GLOBALS['DB_prepared_get']->fetch()) { 
        return $result; 
       } 
      } 

      $GLOBALS['DB_prepared_get']->close(); 

도움 주셔서 감사합니다.

편집 : 그냥 분명히 내 문제는 그들을 인쇄하거나 정확한 결과 값을 가져 오는 방법입니다. 구문은 제가 잘못하고있는 것입니다.

+0

선택에 무엇입니까, 준비된 문은 처음에 작동하지 않는 이유는 무엇입니까? 매개 변수를 잘못 입력하지 않았다면 명시 적으로 작성해야합니다. – FabioCosta

+0

준비된 명령문을 사용하는 것이 무엇입니까? : – trainoasis

+0

보안 때로는 성능, 당신이 변경됩니다 같은 값이 어디 SELECT = FROM 테이블 어디에서 ID =?, 및 다중 사용 Ids – FabioCosta

답변

0

필자는 쿼리의 열을 매개 변수로 지정할 수 없다는 것을 알고 있습니다. 준비된 명령문 문자열에 직접 열을 써야합니다.

$GLOBALS['DB_prepared_get'] = $GLOBALS['DB_something']->prepare("SELECT a,b,c from database_name WHERE hash=?"); 
+0

준비된 문에서 직접 열을 사용하여? '준비된 문'유용하지 않습니다. – trainoasis

+0

준비된 구문의 개념은 입력 매개 변수를 확인하고 정리하는 것입니다 (어느 것이 든간에). – Erik

+0

에 매우 유용하며 가장 중요한 것은 쿼리가 한 번만 준비되면 나중에 매개 변수 만 사용할 수 있습니다. 변경되었습니다. 그리고 그 이유는 내가 나중에 X를 bindParam와 X SELECT X를 변경해야합니다.도 – trainoasis

0

같은

뭔가 심지어 무슨 일이 잘못 설명하려고하지 코드에서 많은 오류가 있습니다. 그러나 OO 프로그래밍에 익숙하지 않다면 먼저 mysqli로 절차 코드를 작성해야한다.

이 코드는 작동합니다 :

$mysqli = new mysqli($database_hostname, $database_username, $database_password, $database_default); 
    if ($mysqli->connect_error) { 
    die('Connect Error (' . $mysqli->connect_errno . ') ' . $mysqli->connect_error); 

    if ($stmt = $mysqli->prepare("SELECT ? from database_name WHERE hash=?")) { 
    $stmt->bind_param("s", $fieldname); // first marker 
    $stmt->bind_param("s", $hashwhere); // second marker 

    $stmt->execute(); 

    $result = array(); 
    while ($stmt->fetch()) { 
     $result[] = array($fieldname); 
    } 

    $stmt->close(); 
    } 

    $mysqli->close(); 

    var_dump($result); 
+0

이 잘 작동하지 않습니다.하지만 그게 내 사건이고 그것을 할 수 없기 때문에 나는 $ stmt에 넣어 글로벌 GLOBALS 해요 Logged 그것을 사용하지 않고. – trainoasis

관련 문제