2013-11-24 32 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

  • 相关问题