Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    11

    mysql_num_rows(): supplied argument is not a valid MySQL result resource

    Salve.
    Mi scuso in anticipo, so che quello in oggetto è un errore molto comune, ma non ho trovato soluzione cercando altrove.
    Descrivo:
    La pagina precedente passa tramite GET alla presente l'ID univoco del record da modificare.
    Qui c'è un form che serve a modificare i dati. Viene interrogato il DB perchè fornisca i dati relativi a quel record, e viene pre riempita parte del form.
    L'utente fa le modifiche volute e poi preme il SUBMIT, che implica la scrittura delle modifche nel DB.
    L'action del form è la pagina stessa, cioè SELF.

    Grazie. Scusate , non ho capito come rendere ordinata l'immissione di questo codice nel post.

    Questo è il codice che produce l'errore, privato delle parti di HTML superflue:

    <?
    $username="***";
    $password="***";
    $db_name="test";
    $tbl_name="main";
    $host="localhost";

    mysql_connect($host,$username,$password);
    @mysql_select_db($db_name) or die("Unable to select database");

    $id=$_GET['id'];
    $result=mysql_query("SELECT * FROM `$tbl_name` WHERE `id`=$id");


    $num=mysql_num_rows($result);
    $i=0;
    while ($i < $num) {

    $old_frequenza=mysql_result($result,$i,"frequenza" );
    $old_modo=mysql_result($result,$i,"modo");

    ++$i;
    }
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "XHTML1-s.dtd">
    <html>
    <head>
    <title></title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" type="text/css" href="style.css" />
    </head>

    <body>

    <form method="post" action="modifica.php" name="rapporto">
    <fieldset>
    <legend>Modifica Record</legend>
    <input type="hidden" name="id" value="<? echo "$id"?>">
    </fieldset>

    <--! QUI C'È IL FORM PRE-RIEMPITO TRAMITE LE VARIABILI $old_frequenza E $old_modo -->

    <div>
    <input type="submit" id="submit" value="INVIA">
    </div>
    </form>


    <?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST'){ // if page is not submitted to itself,

    mysql_connect($host,$username,$password) or die(mysql_error());
    mysql_select_db($db_name) or die(mysql_error());

    $frequenza=$_POST['frequenza'];
    $modo=$_POST['modo'];



    $update="UPDATE `$tbl_name` SET `frequenza`='$frequenza', `modo`='$modo' WHERE `id`='$id'";
    mysql_query($update) or die(mysql_error());


    }
    ?>

    </body>
    </html>

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Metti l'indicatore di errore per la query
    Codice PHP:
    $result=mysql_query("SELECT * FROM `$tbl_name` WHERE `id`=$id") or die ("Query fallita: ".mysql_error()); 
    Vedi un po' cosa ti restituisce

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    11
    Giusto, l'indicatore di errore.
    Ecco qualcosa di più chiaro:

    Query fallita: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

    Preciso che la prima parte del codice funziona, infatti i dati vengono estratti dal db ed inseriti nel form, senza errori. Il problema si manifesta al momento del "submit".
    Preciso anche che quando la pagina del form puntava a una pagina che si occupava dell'INSERT , tutto filava liscio.
    Devo dunque aver sbagliato qualcosa nel momento in cui ho unito le due porzioni di codice.

    Grazie ancora,

    PS: qual è il tag da usare per inserire codice nel forum ?

  4. #4
    Utente di HTML.it L'avatar di sotoli
    Registrato dal
    Mar 2008
    Messaggi
    150
    Credo che il tuo problema sia dovuto al fatto che se richiami questa pagina come 'pagina.php' senza aggiungere alla fine il valore del parametro 'id', cioè 'pagina.php?id=1', la prima query ti risulta cosi:
    SELECT * FROM `main` WHERE `id`=
    e ovviamente mysql ti dice che c'è un errore e non la esegue.
    Crestron Control Systems and AMX Control Systems Programmer

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    11
    Centrato in pieno !
    Dal messaggio di errore mi sembrava un doppio apice, non due singoli vicini.

    Ringrazio clasku e sotoli per avermi aiutato.

    A buon rendere!

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.