Ciao
Devo scrivere una query al db mysql
e devo inserire nella query un parametro
$Qs = $_SERVER['QUERY_STRING'];
Select * from links_infoazienda where categoria = $Qs["catetgoria"] "
Scritto così mi dà errore. Qual'è la sintassi?
Ciao
Devo scrivere una query al db mysql
e devo inserire nella query un parametro
$Qs = $_SERVER['QUERY_STRING'];
Select * from links_infoazienda where categoria = $Qs["catetgoria"] "
Scritto così mi dà errore. Qual'è la sintassi?
ti consiglierei di partire dalle base della gestione del db, non è che scrivendo il testo della query in un file php questo viene miracolosamente eseguito sul database![]()
comunque, dai un occhio qua
www.php.net/mysql_connect
www.php.net/mysql_select_db
www.php.net/mysql_query
www.php.net/mysql_fetch_assoc
www.php.net/mysql_fetch_row
www.php.net/mysql_free_result
www.php.net/mysql_close
Inoltre...
http://php.html.it/guide/leggi/77/gu...mysql-pratica/
http://php.html.it/guide/lezione/269...atabase-mysql/ (da qui in poi)
http://php.html.it/guide/lezione/271...atabase-mysql/
http://openskill.info/topic.php?ID=191
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
il codice intero era questo
E' solo la sintassi del parametro che non conoscocodice:$Qs = $_SERVER['QUERY_STRING']; //querystring categoria $mysqli1 = new mysqli($conStr_Host, $conStr_Username, $conStr_dbPass, $conStr_dbName); $mysqli1->autocommit(true); $result1 = $mysqli->query("Select * from links_infoazienda where categoria =" . $Qs['categoria']); $i = 0; while($row1 = $result1->fetch_assoc()) { printf("%s", $row1["descrizione"]); } $result1->close();
Che errore ti dà?
Cosa ti restituisce echo $Qs; ?
l'errore è il seguente
codice:Fatal error: Call to a member function fetch_assoc() on a non-object in C:\links.php on line 54
Dopo la query scrivi:
Che errore ti scrive?Codice PHP:
if (!$result1)
{
echo ("Errore: ".$mysqli->error);
die();
}
C'è scritto
Errore: Colonna sconosciuta 'pavimenti' in 'where clause'
Ho fatto delle modifiche al codice
Non riconosce $temp100 come una stringa
$temp100 = "pavimenti";
$result1 = $mysqli->query("Select * from links_infoazienda where categoria =" . $temp100);
Devi mettere delle virgolette o degli apici attorno alle stringhe in SQL altrimenti vengono interpretate come nomi di colonna.
Ti converrebbe memorizzare gli id della categoria nel DB non il suo nome.codice:mysqli->query("SELECT * FROM links_infoazienda WHERE categoria ='".$Qs['categoria']."'");
Ad es. hai:
tabella categorie:
tabella infoaziendacodice:id | nome --------------- 1 | cat1 2 | cat2 3 | cat3
Risparmierai spazio e le query saranno più velocicodice:id | nome | id_cat ------------------------------ 1 | azienda 1 | 2 2 | azienda 2 | 1 3 | azienda 3 | 2
ah ecco, nun se capiva
allora, il fatto è che non devi usare $_SERVER['QUERY_STRING'] ma l'array $_GET, in questo caso perché ti pocchi sulla query string, o $_POST, nel caso di un form che passi la roba via post o js che passi la roba via post
se fai un
var_dump($_SERVER) trovi tanta roba interessante
idem per
phpinfo();
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand
@nico80:
c'è un problema di fondo, a parte l'errore della query che non avevo visto ...
$Qs = $_SERVER['QUERY_STRING']; //querystring categoria
questo non restituisce un array, bensi una stringa, che lui usa come array ... ora immagino tenga il reporting dei notice spento altrimenti lo avviserebbe ... deve usare $_GET, in questo caso
inoltre tenere il nome è importante in molte situazioni, infatti quando costruisci un sistema di url "human-readable" capita che non hai a disposibione l'id nella query string e quindi devi andare con i nomi ... ma comunque permane quel problema di fondo![]()
The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand