извлечение данных из 2 mysql баз данных неправильного типа - PullRequest
1 голос
/ 24 апреля 2020

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

вот мой код (только для контекст):

<?php 

require 'dbh-inc.php';


$id = $_SESSION['userId'];
 if(isset($id) == false)
    {
        header("Location:../account.php?faliure");
        exit();

    }

                    $sql = "SELECT product, productAmount, dateOfPurchase, productStatus, userAddress  FROM sales;";
                    $result = mysqli_query($conn, $sql);
                    $resultCheck = mysqli_num_rows($result);
                    if($resultCheck > 0){
                    while($row = mysqli_fetch_assoc($result)){

                        $sql1 = "SELECT eLink FROM products WHERE $row\['product'\];";
                        $result1 =  mysqli_query($conn, $sql1);
                        $resultCheck1 = mysqli_num_rows($result1);
                        if($resultCheck1 == 0){
                            $row1['eLink'] = " ";
                        }
                        else
                            $row1['eLink'] = mysqli_fetch_assoc($result1);


                        echo "<tr><td>". $row['product'] ."</td><td>" . $row['productAmount']. "</td><td>". $row['dateOfPurchase']. "</td><td>". $row['userAddress']. "</td><td>". $row1['eLink'] . "</td><td>" .$row['productStatus']. "</td></tr>" ;
                    }
                    }
                    else
                        echo '<div>no product purcheses yet</div>';
                    exit();
?>

проблемные c строки:

$sql1 = "SELECT eLink FROM products WHERE $row\['product'\];";
                            $result1 =  mysqli_query($conn, $sql1);
                            $resultCheck1 = mysqli_num_rows($result1);
                            if($resultCheck1 == 0){
                                $row1['eLink'] = " ";
                            }
                            else
                                $row1['eLink'] = mysqli_fetch_assoc($result1);

ошибки, которые я получаю:

Notice: Array to string conversion in C:\xampp\htdocs\coupleslove php\includes\manage_sales-inc.php on line 20

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\coupleslove php\includes\manage_sales-inc.php on line 22

Notice: Array to string conversion in C:\xampp\htdocs\coupleslove php\includes\manage_sales-inc.php on line 20

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, bool given in C:\xampp\htdocs\coupleslove php\includes\manage_sales-inc.php on line 22

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

Заранее спасибо!

1 Ответ

2 голосов
/ 24 апреля 2020

Я пытался объяснить в комментариях, но это слишком сложно.

Вы всегда должны использовать Подготовленные операторы , чтобы предотвратить SQL внедрение, и использовать действительные SQL запросы. Итак, эту строку:

$sql1 = "SELECT eLink FROM products WHERE $row\['product'\];";

следует преобразовать в (Предполагая, что таблица products имеет цифру c ключ с именем id)

$stmt = $conn->prepare("SELECT eLink FROM products WHERE id = ?");
$stmt->bind_param("i", $row['product']);
$stmt->execute();
$result1 = $stmt->get_result();

if($result1->num_rows === 0) {
    $eLink = ' ';
} else {
    $row1 = $result1->fetch_assoc();
    $eLink = $row1['eLink'];
}

Затем вы можете вывести $eLink переменная, как это:

echo "<tr><td>". $row['product'] ."</td><td>" . $row['productAmount']. "</td><td>". $row['dateOfPurchase']. "</td><td>". $row['userAddress']. "</td><td>". $eLink . "</td><td>" .$row['productStatus']. "</td></tr>" ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...