Domanda

Non riesco a passare nulla dal campo securityinfo.

for ($k = 1; $k < $fieldscnt; $k++)
{
    $selectsecurityname = mysql_query("SELECT `security name` FROM securityinfo WHERE symbol = '$symbol[$k]'") or die(mysql_error());
    $securityname = mysql_fetch_array($selectsecurityname);
    $sym = $symbol[$k]

    echo "<td>$securityname[$sym]</td>";
}

In sostanza, voglio per cercare la riga che ha una partita nel campo symbol, quindi restituire il valore dal campo securityinfo nella stessa riga.

È stato utile?

Soluzione

Oltre alle risposte degli altri fissaggio parti del tuo esempio, c'è un altro problema:
Si (prova a) afferrare un valore da una tabella nel tuo esempio. Ma quando lo si utilizza si accede come un array, mentre probabilmente è solo una stringa (un nome).

Un esempio completo con tutte le cose fisse sarebbe simile a questa:

for ($k = 1; $k < $fieldscnt; $k++)
{
    $sym = mysql_real_escape_string($symbol[$k]);
    $selectsecurityname = mysql_query("SELECT `security name` FROM securityinfo WHERE symbol='$sym'") or die(mysql_error());
    $securitynamearray = mysql_fetch_array($selectsecurityname);
    $securityname = $securitynamearray['security name'];

    echo "<td>$securityname</td>";
}

PS Le parentesi graffe non sono necessarie per le variabili regolari, così li ho omessi.

PPS Si potrebbe utilizzare mysql_fetch_row invece di mysql_fetch_array per evitare che (eventualmente) problemi con il fieldname e lo spazio che contiene:

$securitynamerow = mysql_fetch_row($selectsecurityname);
$securityname = $securitynamerow[0];

Altri suggerimenti

PHP ha alcune limitazioni su come è possibile utilizzare le variabili all'interno di stringhe tra virgolette. Quindi non è possibile ottenere elementi di un array come si sta facendo.

Inoltre, si dovrebbe essere sicuri di utilizzare fuggire quando si interpolare variabili in espressioni SQL del genere.

$selectsecurityname = mysql_query("
    SELECT `security name` FROM securityinfo 
    WHERE symbol = '" . mysql_real_escape_string($symbol[$k]) . "'") 
  or die(mysql_error());

O se ha più senso di farlo in questo modo:

$sym = mysql_real_escape_string($symbol[$k]);
$selectsecurityname = mysql_query("
    SELECT `security name` FROM securityinfo 
    WHERE symbol = '{$sym}'") 
  or die(mysql_error());

$securityname non è gamma completa immediatamente. Se vuoi tirare fuori i valori tramite un tasto, abbiamo bisogno di scorrere ogni riga restituita e aggiungerlo alla nostra matrice:

while ($row = mysql_fetch_array($selectsecurityname) {
  $myArray[] = $row;
}

$sym = $symbol[$k];
echo "<td>".$myArray[$sym]."</td>";

Per ulteriori informazioni su mysql_fetch_array(), consultare la documentazione: http: / /php.net/manual/en/function.mysql-fetch-array.php

Se si desidera accedere indici di matrice in una stringa, racchiuderli tra parentesi graffe:

$a= array(
 'hello'=> 'world',
 'nice'=> 'one',
);

var_dump("This is the value of \$a['hello']: {$a['hello']}");

e ri-scrivere la sua dichiarazione originale come:

for ($k = 1; $k < $fieldscnt; $k++)
    {
    $selectsecurityname = mysql_query("SELECT `security name` FROM securityinfo WHERE symbol = '{$symbol[$k]}'") or die(mysql_error());
    $securityname = mysql_fetch_array($selectsecurityname);
    $sym = $symbol[$k]

    echo "<td>{$securityname[$sym]}</td>";

Naturalmente, è necessario assicurarsi che sia sfuggito $symbol[$k] correttamente per l'utilizzo in una dichiarazione mysql.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top