Come si fa una query?

Errore:

Ho scritto il seguente script in una pagina php.

$query = "SELECT user_id FROM user WHERE user_name = '$user_name' AND email = '$email'";

$result = mysqli_query($link, $query);

if (!($result))

{

$feedback = 'Error - non va bene';

return $feedback;

}

Ma non riesco a far funzionare la query. Il messaggio di errore:

mysqli_query() expects parameter 1 to be mysqli

Non riesco a capire il motivo.

In qualche manuale è scritto che occorre usare anche la connessione per ogni query e in altri no.

Come si effettua una query da php?

Mi puoi aiutare, Gianni?

inviato 11 anni fa
Ladis
X 0 X

Pretendi poco...  :giveup:

Ti servirebbe un'intera guida su PHP-MySQL (in lavorazione, sarà pronta a settembre  ;) ).

L'unica cosa che posso fare adesso è riportarti un esempio preso da un mio lavoro. :dunno: Ti consiglio di analizzarlo riga per riga e studiare il funzionamento di ogni istruzione, magari cercando sulla documentazione ufficiale di PHP (www.php.net)

Questo esempio usa l'estensione mysql

<?php

$conf_host = 'localhost';
$conf_user = 'root';
$conf_pass = 'mia_password';
$conf_db = 'nome_database';


// connessione a MySQL
$link = mysql_connect($conf_host, $conf_user, $conf_pass);
if (!$link) {
   die('Errore nella connessione: ' . mysql_error());
}

// selezione del database
$db_selected = mysql_select_db($conf_db, $link);
if (!$db_selected) {
   die ('Errore nella selezione del DB: ' . mysql_error());
}


// invio query
$query = "SELECT * FROM articoli";

$result = mysql_query($query, $link);
if (!$result) {
   die('Errore nella query: ' . mysql_error());
}

echo('<h1>Elenco Articoli</h1>');

if(!mysql_numrows($result))
{
   echo ("Non ci sono articoli nel database");
}
else
{
   echo('<table border="1" cellpadding="2" cellspacing="0">
         <tr>
            <th>Titolo</th>
            <th>Data creazione</th>
            <th>Ultima modifica</th>
            <td></td>
            <td></td>
         <tr>');
   
   while ($riga = mysql_fetch_assoc($result))
   {
      $titolo = htmlspecialchars($riga['titolo']);
      
      echo("<tr>
               <td><a href=\"visualizza.php?id=$riga[id]\">$titolo</a></td>
               <td>$riga[data_creazione]</td>
               <td>$riga[data_ultima_modifica]</td>
            <tr>");
   }
   
   echo("</table>");
}

?>

le fasi principali sono:

1) connessione al database server (mysql_connect)

2) selezione del database (mysql_select_db)

3) invio della query (mysql_query)

4) eventuale recupero dei risultati (mysql_fetch_assoc) nel caso di SELECT

Viene usata anche la funzione mysql_numrows per verificare se la query ha restituito dei risultati

Se qualche riga non ti è chiara possiamo discuterne.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Allora la prima domanda:

1. Già possiamo utilizzare la libreria php_mysqli.dll in tutti gli effetti?

2. Nel mio caso di utilizzare la php_mysqli.dll la connessione avviene correttamente.  La connessione crea con un file esterno e lo includo semplicemente quando mi serve.  Ma non funziona la query di select o altro.  Come mai?

risposto 11 anni fa
Ladis
X 0 X

1) No, è ancora troppo poco supportata dai vari hoster  :(

2) Il problema sarà un altro. Ti consiglio di guardare come nell'esempio che ho riportato ad ogni funzione ho fatto seguire un controllo. Fai altrettanto così sarà semplice capire cosa non funziona.

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Ho fatto esattamente come il tuo script.

Connessione avviene.

Ma si ferma nel rigo mysqli_query() con il messaggio di errore:

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in c:\Inetpub\wwwroot\gestorion\db_vars.php on line 28

Warning: mysqli_error() expects exactly 1 parameter, 0 given in c:\Inetpub\wwwroot\gestorion\db_vars.php on line 30

Mi fa impazzire....

Aiutami. Grazie.

<?php

error_reporting(E_ALL);

?>

<?php

//Connessione al db

$dbUser = "root";

$dbPass = "pushpams";

$dbName = "orion";

$dbHost = "localhost";

//$link = (mysqli_connect($dbHost, $dbUser, $dbPass));

$link = mysqli_connect($dbHost, $dbUser, $dbPass);

if (!$link) {

   die('Errore nella connessione: ' . mysqli_error());

   print(mysqli_error());

}

// selezione del database

$db_selected = mysqli_select_db($link, $dbName);

if (!$db_selected) {

   die ('Errore nella selezione del DB: ' . mysqli_error());

}

else {

print("Connessione Ok");

}

//invio query

$query = "Select * From user";

$result = mysqli_query($query, $link);

if (!$result) {

die('Errore nella query: ' . mysqli_error());

}

echo('<h1>Elenco Articoli</h1>');

if(!mysql_numrows($result))

{

echo ("Non ci sono articoli nel database");

}

else

{

echo('<table border="1" cellpadding="2" cellspacing="0">

<tr>

<th>User Id</th>

<th>Nome</th>

<th>Cognome</th>

<td></td>

<td></td>

<tr>');

while ($riga = mysqli_fetch_assoc($result))

{

$titolo = htmlspecialchars($riga['titolo']);

echo("<tr>

<td><a href=\"visualizza.php?id=$riga[id]\">$titolo</a></td>

<td>$riga[first_name]</td>

<td>$riga[last_name]</td>

<tr>");

}

echo("</table>");

}

?>

risposto 11 anni fa
Ladis
X 0 X

Quegli errori sono causati dal fatto che stai usando le funzioni dell'estensione mysqli come se fossero le stesse dell'estensione mysql.

I dettagli li trovi qui:

http://www.phpnews.it/content/view/138/80/1/3/

riporto solo un passo ma ti conviene leggere tutto l'articolo:

Per effettuare la query abbiamo fatto uso della funzione mysqli_query a cui abbiamo passato come parametri il $link al server MySQL e la stringa SQL. Contrariamente a quanto accadeva in passato con l'estensione ext/mysql, adesso il link al server MySQL non è più un parametro opzionale ma va necessariamente passato a questa funzione.
risposto 11 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda