用于执行sql的php函数不会返回任何内容

时间:2016-05-03 20:23:53

标签: php mysql sql function

我正在制作网上商店,需要检索商品的价格 我现在一直在阅读和搜索几周而没有任何运气,这里的任何人都有答案吗?

- > 小解释

  • 每件商品都有一些尺寸可供选择,每件商品都有该商品的价格。
  • 我需要检索的价格是该商品的最低价格。

问题:

函数getPrice()在我无法检查的情况下不会返回任何内容。

它似乎也没有产生任何错误。

我的代码:

<?php 
$servername =   "localhost";
$username =     "beegeeky";
$password =     "pwd";
$dbname =       "beegeeky";
$conn = new mysqli($servername, $username, $password, $dbname);


function getPrice($id){
$sql = "SELECT MIN(price) FROM item_price WHERE size_id IN (SELECT id FROM item_size WHERE item_id =".$id.");";
$lowestprice = $conn->query($sql);
return $lowestprice;
}



$sql = "SELECT * FROM item ORDER BY id DESC;";
$qresult = $conn->query($sql);
if ($qresult->num_rows > 0) {
while($item = $qresult->fetch_assoc()) {
    ?>
    <div class="item" id="item_<?php echo $item["id"]; ?>" onclick="itemClick('item_<?php echo $item["id"]; ?>')">

        <div class="likeHitBox" onclick="like('like_<?php echo $item["id"]; ?>')"></div>
            <div class="like<?php if ($conn->query("SELECT * FROM item_like WHERE item_id = ". $item["id"] . " AND user_id = ". $userID .";")->num_rows > 0){?> liked<?php } ?>" id="like_<?php echo $item["id"]; ?>"></div>
        <div class="iconContainer"></div>

        <div class="itemImg">
            <img src="../img/<?php echo "BoneConductingHeadphones/BCH.png"; ?>">
        </div>

        <div class="price">
            <?php echo getPrice($item["id"]); ?>
        </div>
        <div class="priceContainer"></div>

    </div>
    <?php
}
}
$conn->close();
?>

如果我需要添加任何内容,只需询问:)

**编辑:** 谢谢,我对功能进行了一些更改,我现在拥有的是:

function getPrice($id){
    global $conn;
    $sql = "SELECT MIN(price) FROM item_price WHERE size_id IN (SELECT id FROM item_size WHERE item_id =".$id.");";
    $lowestprice = $conn->query($sql)->fetch_assoc();
    return $lowestprice[0];
}

这会返回一个数组(yay现在返回一些东西),但是数组似乎是空的,那就是为另一个SO问题工作

谢谢!

3 个答案:

答案 0 :(得分:0)

$conn函数中不存在getPrice变量。

http://php.net/manual/en/language.variables.scope.php

另外,请查看sql注入。

PHP MySQLI Prevent SQL Injection

答案 1 :(得分:0)

之间缺少几行
$lowestprice = $conn->query($sql);

return $lowestprice;

你需要记录集的技术结果,就像你使用$ qresult一样。

答案 2 :(得分:0)

试试这个:

function getPrice($conn, $id)
{
    $sql = "SELECT MIN(price) FROM item_price WHERE size_id IN ( " .
           "     SELECT id FROM item_size WHERE item_id =" . $id .
           ")";
    $lowestprice = $conn->query($sql);

    return $lowestprice;
}

您必须将MySQLi连接作为输入包含在函数中才能生效。