3

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>";
}

基本的には、フィールドに一致する行を検索し、同じ行symbolのフィールドから値を返したいと考えています。securityinfo

4

4 に答える 4

4

PHP では、引用符付き文字列内で変数を使用する方法にいくつかの制限があります。したがって、あなたがやっているように配列要素を取得することはできません。

また、変数をそのような SQL 式に補間するときは、必ずエスケープを使用する必要があります。

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

または、次のようにする方が理にかなっている場合:

$sym = mysql_real_escape_string($symbol[$k]);
$selectsecurityname = mysql_query("
    SELECT `security name` FROM securityinfo 
    WHERE symbol = '{$sym}'") 
  or die(mysql_error());
于 2010-01-17T06:32:40.297 に答える
2

$securitynameすぐに完全な配列ではありません。キーを介して値を引き出したい場合は、返された各行を循環して独自の配列に追加する必要があります。

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

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

の詳細についてmysql_fetch_array()は、次のドキュメントを参照してください: http://php.net/manual/en/function.mysql-fetch-array.php

于 2010-01-17T06:30:50.860 に答える
0

文字列内の配列インデックスにアクセスする場合は、それらを中括弧で囲みます。

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

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

元のステートメントを次のように書き直します。

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>";

もちろん、$symbol[$k]mysql ステートメントで使用するには、 が正しくエスケープされていることを確認する必要があります。

于 2010-01-17T06:49:26.170 に答える
0

あなたの例の一部を修正している他の人の答えに加えて、別の問題があり
ます.あなたはあなたの例でテーブルから値を取得しようとしています. しかし、それを使用するときは、おそらく単なる文字列 (名前) ですが、配列としてアクセスします。

すべてが修正された完全な例は次のようになります。

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中括弧は通常の変数には必要ないので、省略しました。

PPSフィールド名とそれに含まれるスペースの問題を(最終的に)防止するmysql_fetch_row代わりに使用できます。mysql_fetch_array

$securitynamerow = mysql_fetch_row($selectsecurityname);
$securityname = $securitynamerow[0];
于 2010-01-17T12:03:08.543 に答える