1

私がやろうとしていることに対してうまく機能するクエリがありますが、これを拡張して、stockpicks テーブルから他のすべての情報を取得したいと思います。現在は、ユーザーによる株価記号の検索に一致し、データベースにクエリを実行して一致するかどうかを確認しますが、そのテーブルの他のデータを使用することはできません。これは私が変更前に持っているものです:

$sqlCommand = "(SELECT id, symbol as sym FROM stockpicks WHERE symbol LIKE '%$get_quote%')";

これが私がやろうとしてきたことであり、私の問題です。

$sqlCommand = "(SELECT * FROM stockpicks symbol as sym WHERE symbol LIKE '%$get_quote%')";

次のエラーが表示されます。

SQL 構文にエラーがあります。1 行目の「as sym WHERE symbol LIKE '%hig%')」の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

前に述べたように、シンボルを呼び出すだけでなく、必要な場合に備えてすべての情報を呼び出すだけです。他の情報を検索に合わせたくはありませんが、他のデータを使用して、一致と組み合わせて出力できるようにしたいと考えています。これが意味をなさない場合は、私に知らせてください。皆様の有益な情報提供に感謝いたします。そのかけがえのない。クリス

編集:テーブル構造は

ID | シンボル | エントリー | 終了 | オープンクローズ | 申込日

理解を深めるために、スクリプト全体を含めます。オープンポジションの場合、変数を利用できるようにしています。

<?php
error_reporting(E_ALL ^ E_NOTICE); //this is for debugging, remove if you dont need anymore
ini_set("display_errors", 1); //this is for debugging, remove if you dont need anymore
$searchoutput = "";
$ticker = "goog";

if (isset($_POST['get_quote'])) {
$ticker = $_POST['ticker'];
}

$open = fopen("http://quote.yahoo.com/d/quotes.csv?s=$ticker&f=sl1d1t1c1ohgv&e=.csv", "r");
$quote = fread($open, 1000);

fclose($open);

$quote = str_replace("\"", "", $quote);
$quote = explode(",", $quote);

$quote_0 = ($quote[0]);
$quote_1 = ($quote[1]);
$quote_2 = ($quote[2]);
$quote_3 = ($quote[3]);
$quote_4 = ($quote[4]);
$quote_5 = ($quote[5]);
$quote_6 = ($quote[6]);
$quote_7 = ($quote[7]);
$quote_8 = ($quote[8]);

echo "<div class='symbol'><div class='quote'>Company: $quote_0</div></div>";
echo "<div class='leftofStocks'><div class='row'><div class='quote'>Last trade: $$quote_1</div>";
echo "<div class='quote'>Date: $quote_2</div>";
echo "<div class='quote'>Time: $quote_3</div>";
echo "<div class='quote'>From Previous: $$quote_4</div></div>";
echo "<div class='row'><div class='quote'>Open: $$quote_5</div>";
echo "<div class='quote'>High: $$quote_6</div>";
echo "<div class='quote'>Low: $$quote_7</div>";
echo "<div class='quote'>Volume: $quote_8</div></div>";

if (isset($_POST['get_quote']) && $_POST['get_quote'] != "") {
$ticker = $_POST['ticker'];
$get_quote = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['ticker']);

$sqlCommand = "(SELECT id, symbol as sym FROM stockpicks WHERE symbol LIKE '%$get_quote%')";

$sym = strtoupper($sym);
$get_quote = strtoupper($get_quote);
        include_once("storescripts/connect_to_mysql.php");
        $query = mysql_query($sqlCommand) or die(mysql_error());
$count = mysql_num_rows($query);
if($count >= 1){
$search_output .= "
<div class='rightOfStocks'><hr />It Looks like <strong>'$get_quote'</strong> is one of our stock picks<hr />


</div>";
while($row = mysql_fetch_array($query)){
            $id = $row["id"];

   $sym = $row["sym"];
   $sym = strtoupper($sym);
   $search_output .= "

   <div class='rightOfStocks'><h3>Our Pick</h3>$sym<br />
   <br />$$quote_1
   </div>";
                } // close while
} else {
$search_output = "
<div class='rightOfStocks'><hr />0 results for <strong>$get_quote</strong>


<hr /></div>";
}
}

?>                              
                                    <div class="form">  <form method="post" action="<?php echo $_SERVER['REQUEST_URI'];?>">
                                        Get Quote: <input type="text" size="10" maxlength="10" name="ticker"/>
                                        <input type="submit" value="Get Quote" name="get_quote" />
                                        Enter any valid stock quote (ie. AAPL HOG RIMM):<br></form></div>


                                        <!--left of stock results close--></div><!--left of stock results close-->
                                        <?php echo $search_output ;?>
                                </div>
4

2 に答える 2

3
 SELECT * FROM stockpicks symbol as sym WHERE symbol LIKE '%$get_quote%'

する必要があります

 SELECT * FROM stockpicks as sym WHERE symbol LIKE '%$get_quote%'

通常、エラーに記載されている構文の直前を調べることで、mysql のエラーを突き止めることができます。この場合、テーブルを仮名に"FROM stockpicks symbol"割り当てているため、次の構文は構文的に間違っています。この割り当てでは、演算子はオプションであると考えてください。と同じ意味ですstockpicks"symbol""AS sym""AS""FROM stockpicks symbol""FROM stockpicks AS symbol"

この場合のエイリアスの割り当ては、使用されないため無意味であることに注意してください。しかし、割り当てがエラーの理由です。

于 2013-07-03T18:18:20.050 に答える
1

エイリアスを使用する場合、「as」キーワードはオプションです。つまり、「symbol」は「stockpicks」のエイリアスであると考えますが、その後どうすればよいかわかりません。

そのままの名前のシンボル フィールドを返すことが問題ない場合は、その部分を省略するだけで済みます。

$sqlCommand = "(SELECT * FROM stockpicks WHERE symbol LIKE '%$get_quote%')";

実際にフィールド シンボルを sym として返す必要がある場合は、次のようにします。

$sqlCommand = "(SELECT *, symbol as sym FROM stockpicks WHERE symbol LIKE '%$get_quote%')";
于 2013-07-03T18:24:13.830 に答える