2013-06-13 3 views
0

다음 DB 쿼리가 작동하지 않는 이유를 파악하는 데 도움이 필요합니다. 나는 DB 연결이 좋다는 것을 압니다. 또한 $referralname = $_SESSION['user_name'];이 올바르게 렌더링 된 것을 알고 있습니다. 그것은 내 코드와 뭔가가 있어야합니다.DB 정보를 검색 할 수 없습니다.

다음과 같은 오류가 발생합니다. 어쩌면 이것이 이것을 알아내는 데 도움이 될 것입니다.

[12-Jun-2013 21:13:54 America/New_York] PHP Warning: mysql_query() expects parameter 1 to be string, object given in /x/x/public_html/americansolar/partner/classes/Referral.php on line 89 
[12-Jun-2013 21:13:54 America/New_York] PHP Warning: mysql_num_rows() expects parameter 1 to be resource, null given in /x/x/public_html/americansolar/partner/classes/Referral.php on line 90 

P. while 문이 필요한지 아닌지는 확실하지 않습니다. 왜냐하면 항상 하나의 결과 만 반환하기 때문입니다. ???

내 코드 :

// creating a database connection 
$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); 

// if no connection errors (= working database connection) 
if (!$this->db_connection->connect_errno) { 


     $referralname = $_SESSION['user_name']; 


     // get the referrer's id 
     $query_get_referral_id = $this->db_connection->query("SELECT * From users WHERE user_name = '".$referralname."';"); 
     $result = MYSQL_QUERY($query_get_referral_id); 
     $numberOfRows = MYSQL_NUM_ROWS($result); 
     $i = 0; 
     while ($i<$numberOfRows) 
     { 
        $thisId = MYSQL_RESULT($result,$i,"user_id"); 

        $i++; 
      } 
} 

내 솔루션 : mysqlimysql 혼합

$query_get_referral_id = $this->db_connection->query("SELECT * From users WHERE user_name = '".$referralname."';"); 
while($row = mysqli_fetch_array($query_get_referral_id)) 
    { 
     $thisId = $row['user_id']; 
    } 

답변

3

개봉 ... 그들은 완전히 다른 두 가지와 호환되지 않는 인터페이스입니다. 둘째로, $query_get_referral_id은 id 값이 아닙니다 ... mysqli_result object입니다. 그런 다음 해당 객체에서 값을 추출해야합니다.

$stmt = $this->db_connection->query("SELECT user_id From users WHERE user_name = ?"); 
$stmt->bind_param('s', $referralname); 
$stmt->execute(); 

if($stmt->num_rows) { 

    $stmt->bind_result($userId); 

    while($stmt->fetch()) { 
     // do something with $userId... 
     // each iteration of this loop is a 
     // row of the result set, it will automatically 
     // load the value of the user_id into $userId 
    } 
} 
+0

Ahh that much much :) 그럼 mysqli_result 형식을 유지하기 위해 이것을 변경해야합니까? '$ result = MYSQL_QUERY ($ query_get_referral_id); ' –

+0

내 업데이트보기 ... – prodigitalson

+0

감사합니다. while 루프 내부에서 user_id 행을 변수에 넣는 방법에 대해 더 자세히 설명 할 수 있습니까? 또한 이것을 변수'$ i ++'로 반복 할 필요가 없습니까? 죄송합니다, 그냥 오래된 방법을 사용하여 :) :) –

0

을 당신이해야한다고 생각이 donot :

그리고 마지막으로는 ... PDO 또한


이에 대한 prepared statement를 사용해야합니다 mysqli 스틱, 또는 사용 ... mysql를 사용 DONT query like

$query_get_referral_id = $this->db_connection->query("SELECT * From users WHERE user_name = '".$referralname."';"); 
$result = MYSQL_QUERY($query_get_referral_id); 

글쎄, o

$result = $this->db_connection->query("SELECT * From users WHERE user_name = '".$referralname."';"); 
관련 문제