Данные, полученные из MySQL, не отображаются при использовании PHP

#php #mysql

#php #mysql

Вопрос:

Я работаю над этой программой, которая получает некоторые входные данные от пользователя, а затем использует эти входные данные для извлечения данных из нескольких таблиц в базе данных MySQL. Моя проблема в том, что, похоже, я ничего не получаю из таблиц MySQL, и было бы здорово, если бы вы могли помочь.

dbConn.php

 <?php
$ser = "localhost";
$user = "root";
$pass = "pass";
$db = "dbvisual";

$conn = mysqli_connect($ser, $user, $pass, $db) or die("connection failed");
echo "connection success";

?>
 

form.php

 <?php 

if(isset($_Post['submit'])){    // Checking to see if the form has been submitted
    $battery = (int) $_POST['battery']; // Battery Input element
    $cycle = (int) $_POST['cycle'];   // Cycle input element
    $xVar = $_POST['X'];    // X variable
    $yVar = $_POST['Y'];    // Y variable

    // Trying to get the x variable based on what the user said
    $mySqlQueryX = "SELECT cap 
                    FROM cycle 
                    WHERE cycleID = $cycle";

    $feedbackX = mysqli_query($conn, $mySqlQueryX);
    echo "<h1>$feedbackX</h1>";

}
?>
 

index.php

 <!-- Connecting to the database -->
<?php
include 'dbConn.php';
?>

<!-- The Styling of the website -->
<style>
    <?php include 'main.css'; ?>
</style>

<!-- The Skeleton of the website -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <?php include "form.php" ?>
    <!-- The entire website -->
    <div id="body">
        <!-- The input half -->
        <div id="inputs">
            <!-- The input form -->
            <form action="index.php" method="POST">
                <div id="form">
                    <!-- Labels -->
                    <div id="label">
                        <label for="">Which Batteries?</label>
                        <label for="">What Cycles?</label>
                        <label for="">What's X?</label>
                        <label for="">What's Y?</label>
                        <label for="">Discharge?</label>
                        <label for="">Charge?</label>
                    </div>
                    <!-- User Info -->
                    <div id="info">
                        <input type="text" placeholder="Batteries" required 
                        oninvalid="this.setCustomValidity('No Batteries Were Entered')"
                        oninput="setCustomValidity('')" name="battery">

                        <input type="text" placeholder="Cycles" required 
                        oninvalid="this.setCustomValidity('No Cycles Were Entered')"
                        oninput="setCustomValidity('')" name="cycle">

                        <select name="X">
                            <option value="cap">Capacity</option>
                            <option value="speCap">Specific Capacity</option>
                            <option value="voltage">Voltage</option>
                        </select>

                        <select name="Y">
                            <option value="cap">Capacity</option>
                            <option value="speCap">Specific Capacity</option>
                            <option value="voltage">Voltage</option>
                        </select>

                        <input type="checkbox" name="discharge" checked>
                        <input type="checkbox" name="charge" checked>
                    </div>
                </div>
                <!-- Submit Button -->
                <div>
                    <button type="submit" name="submit">Submit</button>
                </div>
            </form>
        </div>
        <!-- The graph half -->
        <div id="graph">
            <p>hello</p>
        </div>
    </div>
</body>
</html>
 

Когда я пытаюсь «повторить» то, что я должен получить из базы данных, ничего не отображается, и я предполагаю, что проблема может быть связана с тем, что у mysqli_query() возникли проблемы с $conn.

Спасибо вам всем!

Комментарии:

1. ПРЕДУПРЕЖДЕНИЕ : при использовании mysqli вы должны использовать параметризованные запросы и bind_param добавлять любые данные в свой запрос. НЕ используйте для этого интерполяцию или конкатенацию строк, поскольку вы создали серьезную ошибку SQL-инъекции . НИКОГДА не помещайте $_POST $_GET или данные любого типа непосредственно в запрос, это может быть очень вредно, если кто-то попытается использовать вашу ошибку.

2. 🐘 Если вы только начинаете работать с PHP и хотите создавать приложения, я бы настоятельно рекомендовал изучить различные фреймворки разработки , чтобы узнать, сможете ли вы найти тот, который соответствует вашему стилю и потребностям. Они бывают разных видов: от легких, таких как Fat-Free Framework , до гораздо более полных, таких как Laravel . Они дают вам конкретные примеры для работы и рекомендации по написанию кода и организации файлов вашего проекта.

3. Примечание: объектно-ориентированный интерфейс to mysqli значительно менее подробный, что упрощает чтение и аудит кода, и его нелегко спутать с устаревшим mysql_query интерфейсом, где отсутствие одного i может вызвать проблемы. Используйте этот стиль: $db = new mysqli(…) и $db->prepare("…") Процедурный интерфейс является артефактом эпохи PHP 4 и не должен использоваться в новом коде. Кроме того, процедурный интерфейс имеет менее строгую проверку ошибок и отчеты, что затрудняет усилия по отладке.

4. Есть ли что-нибудь в таблицах? Можете ли вы подтвердить, что данные присутствуют, что используемый вами запрос работает независимо от PHP, например, через mysql> оболочку или MySQL Workbench и т. Д.?

5. просто повторите $mySqlQueryX в php, скопируйте и вставьте результат в терминал mysql или phpmyadmin. Возможно, это из $_Post -за form.php (так и должно быть $_POST )

Ответ №1:

Вам нужно изменить свой form.php файл, это то, что я предлагаю

  <?php
 if(isset($_POST['submit'])){
    $battery = (int) $_POST['battery']; // Battery Input element
    $cycle = (int) $_POST['cycle'];   // Cycle input element
    $xVar = $_POST['X'];    // X variable
    $yVar = $_POST['Y'];
$con = mysqli_connect("localhost","root","passer","arduino");

if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  exit();
} 
$mySqlQueryX = "SELECT cap 
                    FROM cycle 
                    WHERE cycleID = '".$cycle."' ";
$result = mysqli_query($con, $mySqlQueryX);

// Fetch all
print_r(mysqli_fetch_all($result, MYSQLI_ASSOC)); 

// Free result set
mysqli_free_result($result);

mysqli_close($con);
}