0

上下文:我已经与具有股票代码、开盘价、最高价、最低价、收盘价、间隔(1d、1wk 和 1mo)和日期的 MySQL 数据库建立了连接。现在,我试图让用户可以在 HTML 中选择“代码”名称和“间隔”,并将此输入作为 MySQL 搜索查询发送给 PHP。然后将这些数据保存在一个数组 ( $data_array[] = $row) 中,这样我就可以在 javascript 变量中使用这些数据。我的主要目标是首先能够打印 MySQL 查询的输出(即$data_array像这样的值:[date,open,high,low,close],[date,open,high,low,close],等等。我将在 javascript 中使用它来使用谷歌图表打印出图表。目前,我已经为tickeras AAPL 和interval作为 1mo(1 个月)来测试我是否可以从数据库中获取数据

问题:每当我运行 PHP 代码时,我都会不断收到“未定义的数组键“ticker””以及“未定义的数组键“interval””。我在php array 中找到了这个主题 mysql 查询结果,但不确定这是否能解决我遇到的问题。我也得到了syntax error, unexpected variable "$stmt",但现在似乎已经解决了

我是 PHP 新手,所以非常欢迎任何帮助(我可能错过的特定文档等)!如果这是重复的,我提前道歉,但我一直在寻找可能的解决方案,但我无法想出一个

HTML:

<form name="query" method="post" action="/connection.php">

              <!--<div class="ticker">-->
              <label for="ticker">Ticker:</label>
              <input style="background: rgba(255,255,255,0.5);border-radius: 10px; border: none;  text-align: center;"
                type="text" id="ticker" name="ticker" required minlength="1" maxlength="4" size="10"
                value="AAPL"></input>
              <!--</div>-->

              <!--<div class="interval"> -->

              <label for="interval">Period:</label>
              <select style="background: rgba(255,255,255,0.5);border-radius: 10px; border: none;  text-align: center;"
                name="interval" id="interval">
                <option value="1d">1 day</option>
                <option value="1wk">1 week</option>
                <option selected="selected" value="1mo">1 month</option>
              </select>
              <!--</div>-->
              <input class="button1" type="submit" formmethod="post" formaction="/connection.php" name="submit"></input>
            </form>

PHP:

<?php
$servername = "...";
$username = "...";
$password = "...";
$dbname = "...";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}
$ticker = $_POST['ticker'];
$interval = $_POST['interval'];

if (isset($_POST['submit'])) {
  $stmt = $mysqli->prepare("SELECT Date, Open, High, Low, Close FROM symbols WHERE ticker='$ticker' AND interval='$interval'");
  $stmt->bind_param("ss", $ticker, $interval);
  $stmt->execute();

  $result = $stmt->get_result();
  while ($row = $result->fetch_assoc($result)) {
    $data_array[] = $row;
    echo "[" . $row["Date"]. "," . $row["Open"]. "," . $row["High"]. "," . $row["Low"]. "," . $row["Close"]. "],";
  } 
  $stmt->close();
}

?>

测试:

    <?php
    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";
    $ticker = $_POST['ticker'];
    $interval = $_POST['interval'];
    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
      die("Connection failed: " . mysqli_connect_error());
    }
    
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
      $stmt = $mysqli->prepare("SELECT Date, Open, High, Low, Close FROM symbols WHERE ticker=? AND interval=?");
      $stmt->bind_param("ss", $ticker, $interval);
      $stmt->execute();
    
      $result = $stmt->get_result();
      while ($row = $result->fetch_assoc($result)) {
        $data_array[] = $row;
        echo "[" . $row["Date"]. "," . $row["Open"]. "," . $row["High"]. "," . $row["Low"]. "," . $row["Close"]. "],";
      } 
      $stmt->close();
    }
    
    ?> 
<!DOCTYPE html>
<html>
<body>
    <div class="container-fluid">
      <div class="statistic-block block">
        <form name="query" method="post" action="" <?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
    
          <!--<div class="ticker">-->
          <label for="ticker">Ticker:</label>
          <input style="background: rgba(255,255,255,0.5);border-radius: 10px; border: none;  text-align: center;"
            type="text" id="ticker" name="ticker" required minlength="1" maxlength="4" size="10"
            value="AAPL"></input>
          <!--</div>-->
    
          <!--<div class="interval"> -->
    
          <label for="interval">Period:</label>
          <select style="background: rgba(255,255,255,0.5);border-radius: 10px; border: none;  text-align: center;"
            name="interval" id="interval">
            <option value="1d">1 day</option>
            <option value="1wk">1 week</option>
            <option selected="selected" value="1mo">1 month</option>
          </select>
          <!--</div>-->
          <input class="button1" type="submit" name="submit" id="submit" onsubmit="return false"></input>
        </form>
      </div>
    </div>
</body>
</html>
4

0 回答 0