2014-07-12 2 views
-2

저는 거의 10 시간 동안이 문제에 갇혀 있었고 현재 문제가 무엇인지 이해하지 못했습니다. 나는 '클래스 mysqli_result의 객체를 LINE 21 (코드에 표시)의'문자열로 변환 할 수 없습니다. '오류가 계속 발생합니다. 필요한 모든 변수가 다른 스택 오버플로 질문을 기반으로 만든이 함수에 있기 때문에 코드의 나머지 부분을 잘라 냈습니다.Mysqli 결과 문자열 변환 문제

function getData() { 
    $db_con = mysqli_connect("localhost","root","pass","website_alp"); 
    //Username entered on a form 
    $f_username = $_POST['name']; 
    //Password entered on a form 
    $f_pass = strip_tags(md5($_POST['pass'])); 
    //Id number of user 
    $idno = mysqli_query($db_con,"SELECT id FROM userbase WHERE username = '".$f_username. "' AND pass = '".$f_pass. "'") ; 
    //PROBLEM IS THIS LINE 
    $query = mysqli_query($db_con,"SELECT profile_pic FROM userdata WHERE id = ".$idno.""); 
    //Loop 
    $result = array(); 
    while($row = mysqli_fetch_row($result)) {$result['profile_pic'] = $row[0]; 
    mysqli_free_result($result);} 
} 

내가 PHP를 처음 접했을 때 도움을 주시면 큰 도움이 될 것입니다. mysqli_query()

+0

'$ result'에서 가져온 것과'$ result'는 무엇입니까? 빈 배열 !!! – Sadikhasan

+0

그 부분을 코딩하는 방법을 잘 모르겠으므로 그 코드를 다른 포럼에서 복사했으며 $ 결과 변수의 주된 목적은 SQL 결과를 문자열로 저장하는 것입니다. – Peezy

답변

1

mysqli_query이 칼럼의 내용을 반환하지 않습니다보십시오. 그냥 진수 문자열을 반환, 거기에 어떤 HTML -

md5의 결과에 strip_tags를 호출 할 필요가 없습니다
$f_username = mysqli_real_escape_string($db_con, $_POST['name']); 
$f_pass = md5($_POST['pass']); 
$qres = mysqli_query($db_con, "SELECT profile_pic 
           FROM userdata d 
           JOIN userbase b ON d.id = u.id 
           WHERE username = '$f_username' 
           AND pass = '$f_pass'") or die(mysqli_error($db_con)); 
$result = array(); 
if ($row = mysqli_fetch_assoc($qres)) { 
    $result['profile_pic'] = $row['profile_pic']; 
} 

가 : 또한, 두 개의 쿼리를 만들 JOIN 하나의 쿼리를 사용 할 필요가 없습니다 태그가 들어 있습니다. 하지만 SQL 주입을 막기 위해 사용자 이름을 피할 필요가 있습니다 (준비된 쿼리를 사용하는 것이 더 좋을 것입니다.하지만 코드를 다시 작성하는 것 같지 않습니다).

쿼리가 1 행만 반환하면 루프를 가져 오는 데 while 루프를 사용할 필요가 없습니다.

+0

답장을 보내 주셔서 감사합니다. 이후에 사용자 이름을 처리하고 코드가 오류를 없애 버렸지 만, ** mysqli_fetch_assoc()은 mysqli_result로 매개 변수 1을 기대하고, ** IF ** 문과 함께 ** 부울 값을 얻는다. – Peezy

+0

Do 당신은'$ qres'에 대한 할당의'또는'부분을 가지고 있습니까? 쿼리가'false'를 반환하면'die()'를 호출하고 스크립트를 계속 진행하지 않아야합니다. – Barmar

+0

wups youre right. 나는 그것이 죽어 버리거나 죽지 않고 어떻게 작동 하는지를보기 위해 그것을 제거했다. 그리고 그것을 덧붙인 것을 잊었다. 도와 주셔서 감사합니다! – Peezy

0

$idno 변수가 아닌 문자열로 객체의 리소스를 반환합니다.

는 결과에 mysqli_fetch_XXX 함수를 호출해야이

$idno = mysqli_query($db_con,"SELECT id FROM userbase WHERE username = '".$f_username. "' AND pass = '".$f_pass. "'") ; 
$row = $idno->fetch_assoc(); 
echo $row['id'];