2016-05-28 4 views
1

の文字列であることを期待私はエラーを取得しています: 警告:mysqli_query()は、パラメータ2がで...がmysqli_query()パラメータ2がbind_param

与えられた文字列、オブジェクトであることを期待します
<?php 
    $connection = new mysqli('localhost','root','', 'scale'); 

    if (mysqli_connect_errno()) { 
     printf("Error de conexión: %s\n", mysqli_connect_error()); 
     exit(); 
    } 

    $stmt = $connection->prepare(' SELECT 
            R.cod_region, P.region, P.comuna, COUNT(DISTINCT(P.id)) AS sitios, COUNT(DISTINCT(A.TEXTO)) AS alarmas 
            FROM region R, pop P, sitios_pop SP, sitios S 
            LEFT JOIN log_alarm_2g A ON S.RSITE = A.RSITE AND A.CLASE = "A1" 
            AND A.INICIO >= "2016-02-14" 
            WHERE 
            R.cod_region = ? AND 
            R.region = P.region AND 
            S.ESTADO = "OPERATIVO" AND 
            S.SITIO = SP.cod_sitio AND 
            SP.id_pop = P.id 
            GROUP BY 
            P.region, 
            P.comuna 
            ORDER BY 
            R.cod_region '); 

    $stmt->bind_param('i', $cod_region); 

    $resultset = mysqli_query($connection, $stmt); 
    $records= array(); 
    while($r = mysqli_fetch_assoc($resultset)){ 
     $records[] = $r; 
    }  
    echo json_encode($records); 
?> 
+0

あなたのデータベース接続はオブジェクト指向で、プロシージャ指向のクエリを実行するようです。そのため、完全なコードでは、このタイプのエラーに直面しませんでした。 –

+0

@rjgodoy、mysqli_query($ connection、$ stmt); ' –

+0

@RohitGoyaniの代わりに' $ stmt-> execute(); 'を使用してください。 – Saty

答えて

0

prepare and bind文を使用してのために我々はあなたが

として使用​​と get_result()をしなければならない何 execute()代わりの mysqli_query()

使用します

$stmt->bind_param('i', $cod_region); 

    // $resultset = mysqli_query($connection, $stmt); 
    $stmt->execute();// use execute 
    $records= array(); 

    $result = $stmt->get_result(); 
    while ($data = $result->fetch_assoc($result)) 
    { 
    $records[] = $data; 
    } 
+1

ありがとう、男!これは私を助ける! – rjgodoy

関連する問題