Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Connessione al db su un file esterno

    Sono in questa situazione: vorrei non dover riscrivere ogni volta il codice per la connessione al db in ogni file in cui ne ho bisogno, quindi ho deciso di scriverlo in un file e includere questo nei file dove serve.

    Il file per la connessione che ho scritto è questo
    Codice PHP:
    <?php
    $host 
    "localhost";
    $user "root";
    $pass "root";
    $dbname "nomedb";

    $conn mysql_connect($host$user$pass) or die('Impossibile stabilire una connessione col database');
    mysql_select_db($dbname) or die('Impossibile selezionare il database');
    ?>
    e sto provando in un file se funziona, il file di prova è questo
    Codice PHP:
    <?php
    include_once("connect.php"); //è il file scritto sopra

    function registra($dati) {
        
    $query "INSERT INTO tabella (nome) VALUES ('Pippo');
        
        mysql_query(
    $query,$conn);
        
        if(!mysql_error(
    $conn)) {
            return true;
        }
        else {
            return false;
        }
    }
    ?>
    Ottengo questi errori in corrispondenza della funzione mysql_query e di mysql_error.
    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\development\php\provadb\include\db func.php on line 7

    Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\development\php\provadb\include\db func.php on line 9

    dbfunc.php è il secondo file di cui ho scritto il codice

    Da cosa dipende?

  2. #2

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Per lo scope delle variabili ok, ma la sintassi di mysql_query la conosco, l'ho usata, in un sacco di altre occasioni senza problemi, cosa c'è che non va con quella funzione?
    A parte il fatto che nel codice qui ho dimenticato di chiudere il doppio apice nella query.

  4. #4
    Come suggerisce filippo.toso il problema sta nello scope della variabile $conn che non viene vista dentro la funzione registra(); ci sono due possibili soluzioni:

    [list=1][*]Rendere globale la variabile $conn utilizzando il comando global mettendo la riga global $conn; all'inizio della funzione (questo metodo lo sconsiglio)[*]sfruttare la funzione mysql_query() omettendo il secondo parametro, in questo caso viene presa l'ultima connessione aperta, cioè quella in $conn. In generale la connessione viene omessa visto che (tendenzialmente) se ne apre una sola[/list=1]

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Pensavo anch'io la stessa cosa ed ho provato, ma ottengo questo:
    caso 1)
    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\development\php\provadb\include\db func.php on line 8

    Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\development\php\provadb\include\db func.php on line 10


    caso2)
    Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\development\php\provadb\include\db func.php on line 7

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in C:\xampp\htdocs\development\php\provadb\include\db func.php on line 7

  6. #6
    Mhhh... sicuro che sia necessaria la password per la connessione al db?

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Si, ci vuole ed ho appena risolto, c'era casino con le inclusioni dei file.
    Grazie comunque per l'interessamento.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.