Problema Prepared Statements

  • Creatore Discussione Creatore Discussione facco88
  • Data di inizio Data di inizio

facco88

Nuovo Utente
12 Giu 2013
3
0
0
Ciao a tutti, voglio utilizzare i prepared statements per reperire i dati dal mio database in un sito php. se io utilizzo come connessione al DB una connessione normale tipo:


Codice:
mysql_connect('localhost','root','root'); 
mysql_select_db('Blog');



non ho problemi e il sito reperisce tutti i post del blog.

Mentre se uso una connessione PDO o MySqli come:


Codice:
//CONNESSIONE MYSQLI  
$mysqli = new mysqli('localhost', 'root', 'root', 'Blog');  

if (mysqli_connect_errno()) {     printf("Connect failed: %s\n", mysqli_connect_error());     exit(); }  

//CONNESSIONE PDO  
try{ $db = new PDO('mysql:dbname=Blog;host=localhost', 'root', 'root');} catch (PDOException $e){     throw new Exception('Connessione fallita: ' . $e->getMessage()); }

e adatto il codice delle query ai nuovi linguaggi, non ricevo alcun errore, ma la paina con i post del sito è vuota, non sembra ricevere alcuna informazione.

Cosa può essere?

grazie mille in anticipo
 
Ciao, posta come fai la query con mysqli
 
Codice:
function valido_id($pid){
	
    $pid = (int)$pid;
	
               
                $stmt = $mysqli->prepare("SELECT COUNT(post_id) FROM post WHERE post_id = ?");
                $stmt->bind_param('i', $pid);
                $stmt->execute();
                $stmt->bind_result($count);
                
        if ($count != 1){
            $stmt->close();
		return false;
	}else{
            $stmt->close();
		return true;
	}
	
}



function prendi_posts(){
	
    
        $stmt = $mysqli->prepare("SELECT  post.post_id AS id, 
                         post.post_titolo AS titolo,
                         LEFT(post.post_testo,512) AS anteprima,
                         post.post_utente AS utente,
                         DATE_FORMAT(post.post_data, '%d/%m/%Y %h:%i:%s') AS data,
                         commenti.commenti_totali,
                         DATE_FORMAT(commenti.ultimo_commento, '%d/%m/%Y %h:%i:%s') AS ultimo_commento
                FROM post
                LEFT JOIN (SELECT commenti.post_id,
                                  COUNT(commenti.commento_id) AS commenti_totali,
                                  MAX(commenti.commento_data) AS ultimo_commento
                           FROM commenti
                           GROUP BY commenti.post_id) AS commenti
                ON post.post_id = commenti.post_id
                ORDER BY post.post_data DESC");
                
        $stmt->execute();
                
	$righe = array();
	
        while(($riga = $stmt->fetch()) !== false){
		$righe[] = array(
			'id' => $riga['id'],
			'titolo' => $riga['titolo'],
			'anteprima' => $riga['anteprima'],
			'utente' => $riga['utente'],
			'data' => $riga['data'],
			'commenti_totali' => ($riga['commenti_totali'] === null) ? 0 : $riga['commenti_totali'],
			'ultimo_commento' => ($riga['ultimo_commento'] === null) ? 'Mai' : $riga['ultimo_commento']
			);
	}
        
        $stmt->close();
        
    
	return $righe;
}



function prendi_post($pid){
	
        $pid = (int)$pid;
	
                $stmt = $mysqli->prepare("SELECT post_titolo AS titolo,
                       post_testo AS testo,
                       post_utente AS utente,
                       post_data AS data
                FROM post
                WHERE post_id = ?");
                
                $stmt->bind_param('i', $pid);
                
                $stmt->execute();
                
                
                $post = $stmt->fetch();
                
                $stmt->close();
                
                $post['commenti'] = prendi_commenti($pid);
                
        return $post;        
	
}


function aggiungi_post($nome,$titolo,$testo){
	
   
 
             $stmt = $mysqli->prepare("INSERT INTO post (post_utente,post_titolo,post_testo,post_data) VALUES (?,?,?,?");
            
             $stmt->bind_param('isss', $pid, $utente, $testo, NOW());
            
             $stmt->execute();
        
             $stmt->close();

} 


////////////////////////////////////////
/// FUNZIONI COMMENTI CON PREPARED ///
////////////////////////////////////////

function prendi_commenti($pid){ 
      
     $pid = (int)$pid; 
     
    
    $stmt = $mysqli->prepare("SELECT commento_testo AS testo,
       commento_utente AS utente,
       DATE_FORMAT(commento_data, '%d/%m/%Y %H:%i:%s') AS data
       FROM commenti	
       WHERE post_id = ?");
 
    $stmt->bind_param("i", $pid);
 
    $stmt->execute();
    
    $righe = array();
    
    
    while(($riga = $stmt->fetch()) !== false){
   
   $righe[] = $riga;
   
   }
 
    $stmt->close();

return $righe;
      
      
     }
	



function aggiungi_commento($pid, $utente, $testo){
	
	if(valido_id($pid) === false){
		return false;
	}
	
 
        $stmt = $mysqli->prepare("INSERT INTO commenti (post_id, commento_utente, commento_testo, commento_data) VALUES (?,?,?,?)");
            
             $stmt->bind_param("isss", $pid, $utente, $testo, NOW());
            
             $stmt->execute();
        
             $stmt->close();

        
	return true;

}
 

Discussioni simili