从2个mysql数据库中拉取数据,类型错误。

我试图从我的数据库中提取数据到一个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();
?>

有问题的几行是:

$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

代码有什么问题?我知道这与插入一个错误的类型到一个函数有关,尽管在我做同样的事情之前的几行,一切都很好,我有点困惑,代码有什么问题。

先谢谢你

解决方案:

我试图在注释中解释,但它太复杂了。

你应该总是使用 预备发言 以防止SQL注入,并使用有效的SQL查询。所以这一行。

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

应该转换为(假设 products 表有一个名为 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>" ;

给TA打赏
共{{data.count}}人
人已打赏
未分类

合并数组和按顺序洗牌两个数组。

2022-9-9 3:07:19

未分类

如何合并多个OpenAPI规范?

2022-9-9 3:07:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索