[RISOLTO] -[PHP e MYSLQI] Problema con prepare e fetch

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP e MYSLQI] Problema con prepare e fetch

Messaggio da Zoff »

I valori sono memorizzati nel DB con gli escape, quindi devi ripulire il db.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSLQI] Problema con prepare e fetch

Messaggio da treled »

come si fa?
hai un esempio?

ciao.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP e MYSLQI] Problema con prepare e fetch

Messaggio da Zoff »

Non c'è un esempio. Li hai memorizzati male. Se non sono tanti fai prima a reinserirli.

Se no devi fare un giro su TUTTI i dati con stripslashes().
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSLQI] Problema con prepare e fetch

Messaggio da treled »

ciao forse è sbagliato qui:

Codice: Seleziona tutto

$db_url = $db->real_escape_string($pag_url);
	$db_titolo = $db->real_escape_string($titolo);
	$db_meta_title =$db->real_escape_string($meta_title);
    $db_data = $db->real_escape_string($data);
    $db_active = $db->real_escape_string($active);
	$db_pages = $db->real_escape_string($pages);
	
	
		$strSQL = "INSERT INTO pagine(url,";
		$strSQL.="titolo,";
		$strSQL.="meta_title,";
		$strSQL.="content,";
		$strSQL.="data,";
		$strSQL.="active)";
		$strSQL.= "VALUES(?,";
		$strSQL.="?,";
		$strSQL.="?,";
		$strSQL.="?,";
		$strSQL.="?,";
		$strSQL.="?)";
			
		$stmt = $db->prepare($strSQL);
		$strtolower_db_url = strtolower($db_url);
		$stmt->bind_param('sssssi',$strtolower_db_url,$db_titolo,$db_meta_title,$db_pages,$db_data,$db_active);
		$stmt->execute();
dimmi se va bene cosi.. perché io la funzione che li leva c'è lo già e funzionava prima che metessi il bind etc..

la funzione è cosi:
function protect($value) {
$value = (get_magic_quotes_gpc()) ? stripslashes($value) : $value;
return $value;
}

la spiegazione era cosi:

Codice: Seleziona tutto

$campo = protect($_POST['campo']); //ATTENZIONE: i campi di input vanno validati attentamente!! 
$campoPerDb = mysql_real_escape_string($campo,$conn); 
e per inserire i dati usavo campoPerDb.

idee?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP e MYSLQI] Problema con prepare e fetch

Messaggio da Zoff »

Il punto è che stripslashes in un programma scritto bene non serve.
Con i prepared statement non hai bisogno di real_escape_string.

Ciò non toglie che fare dei controlli sugli input degli utenti non guasta.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSLQI] Problema con prepare e fetch

Messaggio da treled »

cioè quindi non serve siamo sicuri?

Per ora ho risolto ti ringrazio molto..
aspetto per la conferma su real escape string che non serve perché come dici tu fa tutto il bind.

saluti,
e buona giornata.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [PHP e MYSLQI] Problema con prepare e fetch

Messaggio da Zoff »

No, non serve.
Viene sostituito dal bind e la lettera che gli passi per dirgli di che tipo è la variabile.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [PHP e MYSLQI] Problema con prepare e fetch

Messaggio da treled »

ok, fatto e risolto.
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [RISOLTO] -[PHP e MYSLQI] Problema con prepare e fetch

Messaggio da treled »

ciao, ho un problemino piccolo piccolo.. ma non so perché ho fatto copia/incolla e ho modificato i campi etc..
lui mi segnala:
Fatal error: Call to a member function bind_param() on a non-object in \test\admin\news_modifica.php on line 18

Codice: Seleziona tutto

$id = (isset($_GET["id"])) ? trim ((int)$_GET["id"]): '';

	$query = "SELECT id, _userid, _catid, titolo, intro, testo, data, active FROM news WHERE id = ?";
	$stmt = $db->prepare($query);
	$stmt->bind_param('i', $id); // QUI?
	$stmt->execute();
	$stmt->bind_result($id,$_userid,$_catid,$titolo,$intro,$testo,$data,$active);
	$stmt->store_result();
	$num = $stmt->num_rows;
	$stmt->fetch();
come mai?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [RISOLTO] -[PHP e MYSLQI] Problema con prepare e fetch

Messaggio da Zoff »

Significa che c'è un errore nella query e la prepare fallisce
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [RISOLTO] -[PHP e MYSLQI] Problema con prepare e fetch

Messaggio da treled »

fatto era il campo testo che invece di avere il nome testo nel db lo avevo chiamato content.

ti ringrazio molto.
buona serata.
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [RISOLTO] -[PHP e MYSLQI] Problema con prepare e fetch

Messaggio da treled »

problema con campi sql uguali sia per news e news_categorie.
come faccio ad dirgli che titolo deve essere visualizzato nel blocco del menu a tendina e poi l'altro campo titolo deve essere il titolo della notizia?

Codice: Seleziona tutto

<tr>
    <td>Seleziona Categoria</td>
    <td><?php echo "<select name=\"cat\">";?>
    <option  selected="selected" value="0">Seleziona</option>
    <?php
	
	$query = "SELECT id,titolo  FROM news_categorie";
	$cat = !empty($_POST['cat']) ? $_POST['cat'] : $_catid; 
	$stmt = $db->prepare($query);
	$stmt->execute();
	$stmt->bind_result($id,$titolo);
	while($stmt->fetch())
	{
		if($id==$cat)
				{
					 echo "<option value='".$id."' selected='selected'>".$titolo."</option>";
				}
				 else
				 {
					 echo "<option value='".$id."'>".$titolo."</option>";
				}
		}
		$stmt->close();
?>
      </select></td>
    </tr>
scusa, ma mi va in conflitto con questo:

Codice: Seleziona tutto

<tr>
	<td>Titolo</td>
	<td><input name="titolo" type="text" id="titolo"  value="<?php if(isset($_POST["titolo"])){echo htmlspecialchars($_POST["titolo"]);}else { echo $titolo; }?>" size="40"  /></td>
</tr>
come mai?

grazie.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [RISOLTO] -[PHP e MYSLQI] Problema con prepare e fetch

Messaggio da Zoff »

Cambia nome alla variabile
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
treled
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1331
Iscrizione: lunedì 26 aprile 2010, 17:36
Desktop: gnome
Distribuzione: ubuntu 23.04/22.04
Sesso: Maschile
Località: Massa(MS)

Re: [RISOLTO] -[PHP e MYSLQI] Problema con prepare e fetch

Messaggio da treled »

ok, fatto e funziona.. ti ringrazio molto

un'altro problema in un'altra pagina:

Codice: Seleziona tutto

<?php
require_once(dirname(__FILE__) . '/inc.php');
require_once(dirname(__FILE__) . '/layout/template.php');

	$url = (isset($_GET["url"])) ? trim ((string)$_GET["url"]): '';

	$query="SELECT url, meta_title, titolo, content FROM pagine WHERE url = ? and active=1";
	$stmt = $db->prepare($query);
	$stmt->bind_param('s',$url);
	$stmt->execute();
	$stmt->bind_result($url,$meta_title, $titolo, $content);
	$stmt->store_result();
	$num = $stmt->num_rows;
	$stmt->fetch();

if ($num==0) { $msg =  "Record non trovato!"; }
else
{
	
	$title = "".$meta_title."";
	layout_header($title);

	if ( isset ( $error ) )	{ echo '			<p class="error">' . $error . '</p>' . "\n";	}	
	if ( isset ( $msg ) )	{ echo '			<p class="msg">' . $msg . '</p>' . "\n";	} else {
		
		echo $content;
	}
	layout_footer();
}
?>
perché se digito pages.php?url=pippooo

che la pagina pipooo non esiste .. viene la pagina bianca e non mi stampa il messaggio "Record non trovato"...?

grazie mille e buona notte.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [RISOLTO] -[PHP e MYSLQI] Problema con prepare e fetch

Messaggio da Zoff »

Non hai messo echo.
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 8 ospiti