Visualizzazione risultati 1 fino 10 di 10

Discussione: [MySQL] Errore Subquery 2

  1. #1
    Data registrazione
    29-05-2012
    Messaggi
    247

    Predefinito [MySQL] Errore Subquery 2

    Salve a tutti

    ricevo un errore da questa query se la eseguo in php

    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in ... on line 40

    line 40:

    $row = mysql_fetch_array ($query);
    Codice PHP:

    <?php

    require_once("connetti.php");

    $actor_id $_GET["id"];
    $query mysql_query ("
    SELECT 
    person.Name
    FROM person 
    WHERE PersonID = 
    $actor_id)
    IN
    (SELECT PersonPseudonym.PseudonymID FROM PersonPseudonym WHERE PersonPseudonym.PersonID = 
    $actor_id");

    $row mysql_fetch_array ($query);

    ?>
    ma se la eseguo su Navicat funziona


  2. #2
    mzanella non  connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,880

    Predefinito

    ma se la eseguo su Navicat funziona
    La seconda query diversa dalla prima, la prima ha un errore di sintassi, per questo non funziona.
    Controlla sempre la presenza di errori quando esegui una query.

    Codice PHP:
    <?php 
    require_once "connetti.php";

    $actor_id $_GET["id"]; 
    $query mysql_query("
      SELECT
      person.Name
      FROM person
      WHERE PersonID IN (
        SELECT PersonPseudonym.PseudonymID FROM PersonPseudonym WHERE PersonPseudonym.PersonID = 
    $actor_id
      )
    "
    );

    if (!
    $query) {
        die(
    mysql_error());
    }

    $row mysql_fetch_array ($query); 
    ?>
    Infine, non tanto per te ma per chi dovesse avere problemi simili e capitasse in questa discussione: le funzioni mysql_* non fanno pi parte del linguaggio, ora di passare a mysqli o PDO.

    I suggerimenti che do pi spesso:


  3. #3
    Data registrazione
    29-05-2012
    Messaggi
    247

    Predefinito

    Ciao mzanella

    ok, un piccolo errore, solo che non riesco a visualizzare il secondo nome, Rubino Ventura

  4. #4
    mzanella non  connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,880

    Predefinito

    Hai bisogno di un ciclo, altrimenti recuperi solo il primo elemento nella lista
    Codice PHP:
    while ($row mysql_fetch_array ($query)) {
        ...


    I suggerimenti che do pi spesso:


  5. #5
    Data registrazione
    29-05-2012
    Messaggi
    247

    Predefinito

    Grazie

    poi vedro come adattarlo perche' c'e' un'altra query in mezzo

  6. #6
    Data registrazione
    29-05-2012
    Messaggi
    247

    Predefinito

    dunque il problema e' qua

    prima query a inizio codice

    Codice PHP:

    <?php

    //error_reporting(E_ALL | E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
    require_once("connetti.php");



    $actor_id $_GET["id"];
    $query mysql_query ("
    SELECT person.*
    FROM
    person
    WHERE PersonID=" 
    .  (int)$actor_id) or die ("Error in query: " mysql_error());

    $row mysql_fetch_array ($query);

    //if(mysql_query($query) !== true) {
    //      echo 'errore ' . "\n";
    //    }


    ?>
    processa tutti i dati nella scheda, funziona come puoi vedere



    ma se io inserisco la seconda query vicino al codice che visualizza il nome e data di nascita/e morte (eventuale) sballa tutto, anche se il ciclo while e' chiuso

    Codice PHP:

    <?php 


    $actor_id 
    $_GET["id"]; 
    $query mysql_query("
      SELECT
      person.Name
      FROM person
      WHERE PersonID IN (
        SELECT PersonPseudonym.PseudonymID FROM PersonPseudonym WHERE PersonPseudonym.PersonID = 
    $actor_id
      )
    "
    );

    if (!
    $query) {
        die(
    mysql_error());
    }



    while (
    $row mysql_fetch_array ($query)) {

    ?> 



    <?php echo $row['Name']; ?>

    <?php
    }

    ?>



    quindi non so' come risolvere
    Ultima modifica di blackskyisback : 19-02-2021 alle ore 17.47.48

  7. #7
    Data registrazione
    29-05-2012
    Messaggi
    247

    Predefinito

    ho risolto cosi, incredibile certe volte o lampi di genio

    rinominato $query in $query2 e $row in $fetch

    adesso funziona


    Codice PHP:
    <?php 


    $actor_id 
    $_GET["id"]; 
    $query2 mysql_query("
      SELECT
      person.Name
      FROM person
      WHERE PersonID IN (
        SELECT PersonPseudonym.PseudonymID FROM PersonPseudonym WHERE PersonPseudonym.PersonID = 
    $actor_id
      )
    "
    );

    if (!
    $query2) {
        die(
    mysql_error());
    }



    while (
    $fetch mysql_fetch_array ($query2)) {

    ?> 



    <?php echo $fetch['Name']; ?>

    <?php
    }

    ?>
    resta l'ultimo quesito, io vorrei visualizzare i 2 nomi separati per poterli formattare ed inserire un link al secondo id che rimanda a PersonPseudonym (person)



    esempio:

    da cosi

    Giuseppe Pederiali Rubino Ventura

    a

    Giuseppe Pederiali {Rubino Ventura}(1937-07-16) (♱2013-09-03)

    come fare?
    Ultima modifica di blackskyisback : 19-02-2021 alle ore 18.01.55

  8. #8
    Data registrazione
    29-05-2012
    Messaggi
    247

    Predefinito

    allora, adattando un codice precedente sono riuscito ad ottenere gli array, ma resta ancora un problema


    il link agli id risulta vuoto

    http://.../autori.php?id=

    per Giuseppe Pederiali dovrebbe essere cosi

    http://.../autori.php?id=115

    e per Rubino Ventura

    http://.../autori.php?id=117




    non trovo la soluzione, forse mi sfugge qualcosa che non capisco






    Codice PHP:
    <?php 
    require_once "connetti.php";

    $actor_id $_GET["id"];

    $query2 = ("
      SELECT
      person.Name
      FROM person
      WHERE PersonID IN (
        SELECT PersonPseudonym.PseudonymID FROM PersonPseudonym WHERE PersonPseudonym.PersonID = 
    $actor_id
      )
    "
    );

    $arr = array();
        
    $result mysql_query$query2 );
        if (!
    $result)
        die(
    "mySQL error: "mysql_error());
        while( 
    $fetch mysql_fetch_object$result ) ) : ?>

    <?php


        $risultato 
    explode(" , ",$fetch->PersonID);
        foreach(
    $risultato as $res){
        
    array_push($arr$res);
        }
        
        
        
    $risultato explode(" , ",$fetch->Name);
        foreach(
    $risultato as $res){
        
    array_push($arr$res);
        }
        
        
    $pseudonym_id $fetch->PersonID;

                
                
    ?>
    <? 
    endwhile; ?>

    <?php 

        natcasesort
    ($arr); // Sort array items in PHP so that it is not case sensitive to letters, https://www.php.net/manual/en/function.natcasesort.php
        
    foreach(array_unique($arr) as $ok){
        
        
        echo 
    "<a href='../members/autori.php?id=$pseudonym_id' target='_blank''>$ok &nbsp;</a> ";
        
        
        
        
    }

    ?>
    Ultima modifica di blackskyisback : 19-02-2021 alle ore 19.24.27

  9. #9
    mzanella non  connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,880

    Predefinito

    Stai cercando di accedere a
    Codice PHP:
    $fetch->PersonID 
    ma nel record set quella colonna non esiste:
    Codice:
    SELECT
      person.Name
    FROM person
    WHERE PersonID IN (
      SELECT PersonPseudonym.PseudonymID FROM PersonPseudonym WHERE PersonPseudonym.PersonID = $actor_id
    )
    Dovresti selezionare anche PersonID:
    Codice:
    SELECT
      person.Name, person.PersonID
    FROM person
    WHERE PersonID IN (
      SELECT PersonPseudonym.PseudonymID FROM PersonPseudonym WHERE PersonPseudonym.PersonID = $actor_id
    )

    I suggerimenti che do pi spesso:


  10. #10
    Data registrazione
    29-05-2012
    Messaggi
    247

    Predefinito

    rieccomi

    si, ci ero arrivato giorni fa

    si puo' incorporare l'id nel name?


    adesso visualizzo questo

    36 ---> http://localhost/fumetti/members/autori.php?id=36 (Sergio Bonelli)

    128 ---> http://localhost/fumetti/members/autori.php?id=38 (Guido Nolitta)

    Guido Nolitta ----> http://localhost/fumetti/members/aut...uido%20Nolitta


    Sergio Bonelli ---> http://localhost/fumetti/members/aut...rgio%20Bonelli

    ma io vorrei visualizzare solo i nomi e gli url devono puntare a PersonID



    come fare?








    Codice PHP:
    echo  "<a href=\"../members/autori.php?id=" $ok "\">" '&nbsp;' $ok "</a>"
    Ultima modifica di blackskyisback : 24-02-2021 alle ore 15.14.16

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •