2014-11-18 3 views
0

숨바꼭질 될 것으로 예상 PHP 오류 :는 mysql_query()는 매개 변수 1 문자열을

나는 다음과 같은 PHP 코드를 가지고 있고 내가 뭘 잘못 지금하지 : 나는를받을 수 있기 때문에

<?php 

$conn = mysqli_connect("localhost", "root", "", "student"); 
$sql = "select * from user"; 
$i =0; 
$result = mysql_query($conn,$sql); 
if(!result){ 
$output='Error querying the database'.mysqli_error($conn); 
include 'error.html.php'; 
exit(); 
} 
else{ 

while($row = mysql_fetch_array($result)) 
{ 
$id[]=$row['user_id']; 
$user_name[]=$row['user_name']; 
$user_pass[]=$row['user_pass']; 
$i=i+1; 
} 
include 'user.html.php'; 
} 
?> 

오류 :

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>PHP Error</title> 
    </head> 
    <body> 

      <?php for($no=0; $no<$i; $no++){ 
      echo "<tr>"."<td>". 
      $id[i]. 
      "</td><td>".$user_name[i]. 
      "</td><td>".$user_pass[i]. 
      "</td></tr>"; 
      }?> 

    </body> 
</html> 
:

mysql_query() expects parameter 1 to be string

우는 소리도 내 user.html.php 소스 코드

나는 모든 종류의 충고를 시도했지만 내가 뭘 잘못하고 있는지 알 수 없다.

감사

,

+1

A : MySQL API를 섞어 라. 그 일을하는 사람들을 위해 Stack에 대한 참조가 있어야합니다. –

+1

B : 적절한 mysql_query ($ sql, $ conn) 대신에 mysql_query ($ conn, $ sql) 사용하기 – kero

+1

C : @kingkero + mysql_fetch_array;) –

답변

6

API가 혼합되어 있습니다. mysql_* + mysqli_* 함수는 이 아니고이 아닙니다.

mysqli_으로 연결 한 후 mysql_으로 쿼리 한 다음 다른 mysql_ 기반 기능을 사용하여 결과를 가져 오려고합니다. 여기

:

$conn = mysqli_connect("localhost", "root", "", "student"); 
$sql = "select * from user"; 
$i = 0; 
$result = mysqli_query($conn,$sql); 

if(!result){ 
    $output = 'Error querying the database'.mysqli_error($conn); 
    include 'error.html.php'; 
    exit(); 
} 
else{ 

    while($row = mysqli_fetch_array($result)) 
    { 
     $id[] = $row['user_id']; 
     $user_name[] = $row['user_name']; 
     $user_pass[] = $row['user_pass']; 
     $i = $i + 1; 
    } 
    include 'user.html.php'; 
} 


각주 :

이 코멘트에 언급 같이

사용 : 대신하면서 내부 이러한 4 개 라인

list($id[$i],$user_name[$i],$user_pass[$i++])=$row; 

, 연관 배열을 가져와 필요한 3 개의 필드 만 가져옵니다.

의견을 보내 주셔서 감사합니다.

만 3 개 필요한 필드를 가져 오기 :

select user_id, user_name, user_pass from users

사용한다 mysqli_fetch_assoc() 또는 mysqli_fetch_row() 대신 mysqli_fetch_array() 이스마엘에 대한 list()을 언급 한 것과 관련있다.


의도 또한 편집

: (나는 100 % 확신했다 때부터 이전을 남겨 이스마엘이 그를 가져입니다.).

하지만 다른 것이 있습니다 :

$i=i+1; - 그 가능성이 가장 높은 [i]과 함께 $i= $i +1;

해야한다가. 당신이 $ 부호 [$i]을 필요로하는 것처럼 보입니다. 올바르게 보간하지 않을 $no<$i;을 사용하고 있기 때문입니다.

+0

해야 할 몇 가지 사항이 있습니다. while에있는 네 줄 대신'list ($ id [$ i], $ user_name [$ i], $ user_pass [$ i ++]) = $ row;'를 사용하고 연관 배열을 가져 와서 필요한 3 개의 필드 만 가져옵니다. . 그리고 들여 쓰기를 수정하십시오. –

+0

@IsmaelMiguel 감사합니다 이스마엘, 그 아래에 메모를 추가하겠습니다. –

+0

Ismael :-) 감사합니다. – SocketM

2

오류는 여기

$conn = mysqli_connect("localhost", "root", "", "student"); 
$sql = "select * from user"; 
$i =0; 
$result = mysql_query($conn,$sql);(You should use mysqli_query instead of mysql_query because you have connected your db using mysqli_connect) 

그래서 문제를 그냥 코드에서 어떤 곳입니다.

+0

고맙습니다 .- 초보자 실수 – SocketM

+0

당신은 환영. 다른 사람이 알 수 있도록 대답을 수락 한 것으로 표시하십시오. –

관련 문제