2013-11-24 61 views
-2

我做一個報告制度,我有這樣的代碼,我不知道爲什麼它保持拋出的錯誤mysql_fetch_assoc()預計參數1是資源的json

header('Access-Control-Allow-Origin: *'); 
    $conn=mysql_connect($hostname,$username,$password); 
    mysql_select_db($database); 
    $where = "where 1=1 "; 
    if($_GET["desarrollo"] != 0) 
     $where .= " and satisfaccion_cliente.clave_desarrollo = ".mysql_real_escape_string($_GET["desarrollo"])." "; 
    if($_GET["del"] != "" && $_GET["al"] != "") 
     $where .= " and fecha_creacion between '".mysql_real_escape_string($_GET["del"])."' and '".mysql_real_escape_string($_GET["al"])."' "; 
    $sql = "SELECT COUNT (id_encuesta) as total, primer_apellido, segundo_apellido, nombres"; 
    $sql .= "FROM satisfaccion_cliente"; 
    $sql .= "INNER JOIN usuarios ON satisfaccion_cliente.clave_usuario = usuarios.clave_usuario"; 
    $sql .= "INNER JOIN personas ON usuarios.id_persona = personas.id_persona"; 
    $sql .= "INNER JOIN desarrollos ON desarrollos.clave_desarrollo = satisfaccion_cliente.clave_desarrollo"; 
    $sql .= $where; 
    $sql .= "GROUP BY satisfaccion_cliente.clave_usuario"; 
    $data = array(); 
    $data["total"] = 0; 
    $data["data"] = array(); 
    $resultado = mysql_query($sql); 
    while ($fila = mysql_fetch_assoc($resultado)) { 
     $data["total"] += $fila["total"]; 
     $temp["nombre"] = utf8_encode($fila["nombres"]." ".$fila["primer_apellido"]." ".$fila["segundo_apellido"]); 
     $temp["total"] = $fila["total"]; 
     $temp["color"] = $color[rand(0, 24)]; 
     array_push($data["data"],$temp); 
    } 
    mysql_free_result($resultado); 
    mysql_close($conn); 
    echo json_encode($data); 

我希望你能幫助我,謝謝

回答

0

你得到這個錯誤,因爲mysql_query返回false。你的SQL語句有錯誤。使用mysql_error來找出錯誤。

$resultado = mysql_query($sql); 
if(!$resultado) echo mysql_error(); 
while ($fila = mysql_fetch_assoc($resultado)) { 

連接時缺少空格。添加空間,也許你的查詢將沒有錯誤

$sql = "SELECT COUNT (id_encuesta) as total, primer_apellido, segundo_apellido, nombres "; 
$sql .= "FROM satisfaccion_cliente "; 
$sql .= "INNER JOIN usuarios ON satisfaccion_cliente.clave_usuario = usuarios.clave_usuario "; 
$sql .= "INNER JOIN personas ON usuarios.id_persona = personas.id_persona "; 
$sql .= "INNER JOIN desarrollos ON desarrollos.clave_desarrollo = satisfaccion_cliente.clave_desarrollo "; 
$sql .= $where; 
$sql .= "GROUP BY satisfaccion_cliente.clave_usuario"; 
+0

謝謝,問題是由空格 – Axri

0

我改變了一堆東西,只是傷眼睛(我自己的清晰和清酒)的自由運行。我重寫你的代碼,以擺脫什麼,似乎最有可能的罪魁禍首

  • 普遍缺乏清晰的SQL關鍵字之間

    • 缺少空格(我自己的偏見和OCD工作)

    更正並重新格式化代碼:

    header('Access-Control-Allow-Origin: *'); 
    $conn = mysql_connect($hostname,$username,$password); 
    mysql_select_db($database); 
    $where = array(); 
    if($_GET['desarrollo'] !== '0') { 
        $where[] = 's.clave_desarrollo="'.mysql_real_escape_string($_GET["desarrollo"]).'"'; 
    } 
    if($_GET['del'] !== '' && $_GET['al'] !== '') { 
        $where[] = sprintf('u.fecha_creacion BETWEEN "%s" AND "%s"', 
          mysql_real_escape_string($_GET['del']), 
          mysql_real_escape_string($_GET['al'])); 
    } 
    $sql = 'SELECT COUNT (id_encuesta) as total, primer_apellido, segundo_apellido, nombres'; 
    $sql .= ' FROM satisfaccion_cliente AS s'; 
    $sql .= ' INNER JOIN usuarios AS u ON s.clave_usuario = u.clave_usuario'; 
    $sql .= ' INNER JOIN personas AS p ON u.id_persona  = p.id_persona'; 
    $sql .= ' INNER JOIN desarrollos AS d ON d.clave_desarrollo = s.clave_desarrollo'; 
    $sql .= $where ? ' WHERE '.implode(' AND ',$where) : ''; 
    $sql .= ' GROUP BY s.clave_usuario'; 
    $data = array(); 
    $data['total'] = 0; 
    $data['data'] = array(); 
    //if ($debug) echo __FILE__.' query: '.$sql.PHP_EOL; 
    $resultado = mysql_query($sql); 
    while ($fila = mysql_fetch_assoc($resultado)) { 
        $data['total'] += $fila['total']; 
        $temp['nombre'] = utf8_encode($fila['nombres'].' '.$fila['primer_apellido'].' '.$fila['segundo_apellido']); 
        $temp['total'] = $fila['total']; 
        //$color is currently undefined 
        $temp["color"] = $color[rand(0, 24)]; 
        $data['data'][] = $temp; 
    } 
    mysql_free_result($resultado); 
    mysql_close($conn); 
    echo json_encode($data); 
    

    這顯然是在西班牙,所以爲了以防萬一,我會非常清楚地只爲你

    En tu sentencia sql hace falta muchos espacios,deberíasañadirunalíneadedepuraciónen tu entorno de desarrollo para confirmar que tus sentencias son correctas。 Tambiéndeberíasinformarte a traves de mysql_error() y mysql_errno() si hayalgúnerror durante laejecuciónde la sentencia sql。 Perdona que me haya tomado la libertad de reescribir grandes porciones de tucódigo,lo hago para poder aclararme mejor

  • 相關問題