Problemi nell'uso dell'oggetto MYSQLI

konqueror

Nuovo Utente
20 Mag 2011
7
0
0
Salve!
Sto cominciando ad usare l'oggetto MYSQLI, questa è la pagina di riferimento:
http://php.net/manual/en/mysqli.multi-query.php

Il mio codice è identico a quello proposto dal manuale ufficiale, quindi c'è poco da sbagliare.
Il database esiste poichè l'ho creato in precedenza ma è sempre vuoto nonostante il lancio dello script:
PHP:
<?php
$database = "prova";
$user = "admin";
$pass = "admin";
$link = mysqli_connect("localhost", "root", "CICCIO", "prova");

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


$query = "USE '$database';";
$query .=  "CREATE TABLE IF NOT EXISTS commenti(
idcommento INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
id INT NOT NULL,
user VARCHAR(55) NOT NULL,
email VARCHAR(55) NOT NULL,
data DATE NOT NULL,
commento TEXT NOT NULL,
approvato TINYINT(1) NOT NULL
);";
$query .=  "CREATE TABLE IF NOT EXISTS News (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
testonews TEXT NOT NULL,
titolonews TINYTEXT NOT NULL,
datanews DATE NOT NULL,
autorenews VARCHAR(50) NOT NULL
);";
$query .= "ALTER TABLE commenti
ADD FOREIGN KEY (id) REFERENCES News(id);";
$query .=  "CREATE TABLE IF NOT EXISTS login(
user VARCHAR(50) NOT NULL,
pass VARCHAR(100) NOT NULL
);";
$query .= "INSERT INTO login (user,pass) VALUES ('$user', '$pass')";


/* execute multi query */
[B]if (mysqli_multi_query($link, $query))[/B] {
    do {
        /* store first result set */
        if ($result = mysqli_store_result($link)) {
            while ($row = mysqli_fetch_row($result)) {
                printf("%s\n", $row[0]);
            }
            mysqli_free_result($result);
        }
        /* print divider */
        if (mysqli_more_results($link)) {
            printf("-----------------\n");
        }
    } while (mysqli_next_result($link));
} {
	echo "fail";
}

/* close connection */
mysqli_close($link);
?>

Ho fatto il debug ed ho scoperto che l'istruzione
PHP:
if (mysqli_multi_query($link, $query))
mi da FALSE ergo la query non viene eseguita.
Sto cominciando a considerare l'idea che php non mi faccia fare determinate query del tipo CREATE TABLE o cose affini.
Forse per questo genere di funzioni ci vuole altro?
grazie
 
E' da escludere che PHP non permetta l'utilizzo di CREATE TABLE, qualche volta prò sono presenti dei limiti dovuti alla configurazione del proprio hosting o ai privilegi del proprio account.
 

Discussioni simili