【问题标题】:How come my query works in phpmyadmin but not in my php?为什么我的查询在 phpmyadmin 中有效,但在我的 php 中无效?
【发布时间】:2016-06-06 10:08:30
【问题描述】:

我有一个查询,我试图在我的 php 代码中运行它只返回一个结果,但如果我在 phpmyadmin 中运行相同的查询,它就可以工作。谁能告诉我哪里出错了?

 <?php
     $sql = "SELECT * FROM `product_packs` WHERE `name` IN('" . implode("', '", $_SESSION['cart_items']) . "')";
     $result = $conn->query($sql);

 if ($result->num_rows > 0){
      while($row = $result->fetch_assoc()){
             echo     "<div class='col-xs-6 col-sm-4 col-md-2 col-lg-2'>
                 <div class='products " . $row['brandName'] . " all " . $row['product_range'] . "' id='products'>
                     <div class='hovereffect'>
                         <img class='img-responsive productimg' src='" . $row['img'] . "' alt=''>
                         <div class='overlay1'>
                             <h2> " . $row['name'] . "</h2>
                             <p> 
                                 " . $row['title'] . "
                             <br>
                             <br>
                                 " . $row['price'] . "
                             <br>
                             <a href='remove_from_cart.php?name=" . $row['name'] . "&price=" . $row['price'] . "'>
                                 Remove From Cart 
                             </a> 
                             </p>
                         </div>  
                     </div>
                 </div>";
         }
?>

我已经打印了查询以确保 implode 的结果是正确的,并且似乎我可以在 phpmyadmin 中运行结果并且它工作正常。

任何帮助将不胜感激。

【问题讨论】:

  • 确保您的 $_SESSION['cart_items']) 包含与您通过 phpmyadmin 发送的查询相同的项目。代码看起来没问题。
  • 可能是 $conn 未定义 ... 启用您的错误
  • 显示什么错误..?

标签: php mysql sql


【解决方案1】:

尝试以下方法(未测试,因为我没有从您那里提供足够的数据):

更新:

<?php
$sql = "SELECT * FROM `product_packs` WHERE `name` IN('" . implode("', '", $_SESSION['cart_items']) . "')";

// dump the query send to the database  
$var_dump($sql);

$result = $conn->query($sql);

if ($result->num_rows > 0){

    $resultset_count = $result->num_rows;
    // dump the number of resultsets in the query
    var_dump($resultset_count);

    while($row = $result->fetch_assoc()){

    echo "<div class='col-xs-6 col-sm-4 col-md-2 col-lg-2'>
            <div class='products " . $row['brandName'] . " all " . $row['product_range'] . "' id='products'>
                <div class='hovereffect'>
                <img class='img-responsive productimg' src='" . $row['img'] . "' alt=''>
                <div class='overlay1'>
                    <h2> " . $row['name'] . "</h2>
                    <p> 
                    " . $row['title'] . "
                    <br>
                    <br>
                    " . $row['price'] . "
                    <br>
                    <a href='remove_from_cart.php?name=" . $row['name'] . "&price=" . $row['price'] . "'>Remove From Cart </a> 
                    </p>
                </div>  
                </div>
            </div>
            </div>";
    }

?>

【讨论】:

  • 如果这不起作用请转储(var_dump($aRows;)$aRows(或$row,如果您使用旧代码而不是我的代码):
  • 这给我带来了两个错误。注意:未定义变量:aRow 和警告:为 foreach() 提供的参数无效
  • 如果您分享错误消息,我们可能会帮助您;-) 您的旧代码是否返回错误?如果是,哪个
  • 请提供通过在 phpmyadmin 中发送 sql 查询得到的结果以及在代码的第 3 行中添加后的 var_dump($row) 的结果:$row = $result-&gt;fetch_assoc();var_dump($row);die;
  • 我刚刚做了一个 $aRows 的转储,它显示了一个产品的所有信息,即使查询是针对两种产品的
【解决方案2】:

为什么不使用FIND_IN_SET?它会为您工作,我不知道您的数据库结构,但我创建了一个示例查询,可能对您有所帮助

为什么不使用 FIND_IN_SET?它会为你工作我不知道你的数据库结构我仍然为你创建了查询它可能会帮助你

SELECT * FROM product_packs
   WHERE (
      FIND_IN_SET(cart_items, (SELECT cart_items   TABLENAME
          WHERE cart_items = '$_SESSION['cart_items']')
      )
   )
ORDER BY `product_id` ASC

【讨论】:

  • @DrColossos 我试过使用FIND_IN_SET,但它返回一个致命错误Fatal error: Call to undefined function FIND_IN_SET()
  • @J.Stevenson 检查这个stackoverflow.com/questions/25977164/… 。它可能会帮助你。
  • 如果我在阅读后的理解是正确的FIND_IN_SET() 是一个 sql 函数,但我仍然认为我不能在 php 中运行该函数,因为它返回了一个致命错误
猜你喜欢
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 2018-02-22
  • 2014-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多