Visualizzazione risultati 1 fino 10 di 10

Discussione: [MySQL] Errore Subquery 2

  1. #1
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    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,954

    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
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    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,954

    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
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    Predefinito

    Grazie

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

  6. #6
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    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 18.47.48

  7. #7
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    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 19.01.55

  8. #8
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    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 20.24.27

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

    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
    blackskyisback non è connesso Utente attivo
    Data registrazione
    29-05-2012
    Messaggi
    452

    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 16.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
  •