2017-11-10 16 views
-4

この警告はありますが、このエラーの原因を見つけられませんでした。 エラーは58行目にあります---> $ data = mysqli_fetch_assoc($ result)またはdie(); { 私はしばらく検索しましたが、エラーがどのように呼び出されたのかわかりません。警告:mysqli_fetch_assoc()は、パラメータ1がmysqli_resultになることを期待しています。

"警告:mysqli_fetch_assoc()は、パラメータ1をmysqli_resultされることを想定し、ブールCで与えられる:...ライン58の"

<?php 
require_once('connect.php'); 

$user_id = 0; 

function print_header($title="Header") { ?> 

<title>PDS</title> 


<html> 
<body> 

<?php 


global $user_id; 
if (logged_in()){ 
    $session_user_id = $_COOKIE['pds-usn']; 
    $user_data = user_data($session_user_id, 'id', 'name', 'hashed_pw', 'email', 'last_name', 'email', 'site', 'level', 'joined', 'posts', 'type'); 
    echo $user_data['name']; 
    echo 'U bent ingelogd als '.$_COOKIE['pds-usn'].'. <a href="login.php?logout=1">Uitloggen</a>'; 
} else { 
    echo "U bent niet ingelogd. <a href='login.php'>Login</a> of <a href='register.php'>registreer</a>."; 
} 



?> 


<?php } 


function print_footer() { ?> 

</body> 
</html> 

<?php } 

function user_data($user_id) { 

include('connect.php'); 

$data = array(); 
$user_id = (int)$user_id; 

$func_num_args = func_num_args(); 
$func_get_args = func_get_args(); 

if ($func_num_args > 0) { 
    unset($func_get_args[0]); 

    $fields = '`' . implode('`, `', $func_get_args) . '`'; 
    $sql = "SELECT $fields FROM users WHERE id = $user_id"; 
    $result = mysqli_query($connect, $sql); 
    $data = mysqli_fetch_assoc($result) or die(); 
    return $data; 

} 
}else { 
    return false; 
} 

?> 

Connect.php:

+0

「connect.php」ファイルを投稿してください。 –

+0

@JesseSchokker投稿を編集しました – DutcherGames

+0

あなたのコードはSQLインジェクション攻撃に対して脆弱ですのでご注意ください。 –

答えて

0
<?php 

$connect = mysqli_connect("localhost", "root", "password") or die(header('Location: errorpage.php?error=2')); 
mysqli_select_db($connect, "pds_news_feed") or die(header('Location: errorpage.php?error=3')); 
?> 

機能mysqli_query()はエラー時にFALSEを返します。最初にチェックせずにこの戻り値をmysqli_fetch_assoc()に渡すと、警告/エラーが表示されます。そのためmysqli_query()の戻り値をチェックする必要があり、それがFALSEであれば、あなたはmysqli_error()からエラーを取得することができ、例えば:

$result = mysqli_query($connect, $sql); 
if ($result === FALSE) { 
    die(mysqli_error($connect)); 
} 
$data = mysqli_fetch_assoc($result); 
return $data; 
+0

ありがとう、私は詳細なエラーを発見し、私はクエリを変更し、今それは働いている:) – DutcherGames

関連する問題