【问题标题】:SQL fetch value from tableSQL 从表中获取值
【发布时间】:2019-06-27 10:11:04
【问题描述】:


我正在尝试编写一个从数据库中的表中获取值的函数。我可以成功保存一个值,但现在我遇到了麻烦。

我有一个名为 Response 的表,其中有多个列。其中之一是名为已处理的列,但我希望它适用于任何列。

function fetch($columnName, $senderID){
    $qry = "SELECT '$columnName' FROM Response WHERE senderID = '$senderID'";
    $conn = $this->connect();

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    if ($result = $conn->query($qry) === TRUE) {
        return $result;
    }
    $conn->close();
}

然后我想将数据库值放入一个变量中

 $val = $db->fetch('processed', $senderID);


但是我的代码不起作用。当我尝试检查 $val 中保存的内容时,我什么也得不到。

【问题讨论】:

  • 为什么要在列名周围加上引号?
  • 删除列名和 $senderID 周围的引号,使用 concat 运算符
  • 看起来你使用你的函数错误尝试 $db->fetch($senderID, 'processed');
  • 我在某处看到了引号。我将它们删除并查看

标签: php mysql function mysqli


【解决方案1】:

您的代码的问题在于您何时使用

$result = $conn->query($qry) === TRUE

您正在检查查询是否返回TRUE,但实际得到的是true。因此,您的条件将永远是错误的。所以把它改成

$result = $conn->query($qry) == TRUE

会成功的。

使用===比较运算符意味着该值在所有方面都应该与您定义的相同。

您可以使用==比较运算符来检查值是否等于给定值。

【讨论】:

  • 很抱歉,我在这里输入 $val 时不小心切换了这些。在代码中它的顺序正确,但它仍然不起作用
  • 不,不是。我在一个文件中有一个名为 Database 的类。然后在我调用它的文件中( $val = $db->fetch... 所在的位置)我 include "filewithdatabase"; 然后使用 $db =新数据库();我使用相同的过程来添加数据库记录,我有一个名为 save 的函数,它可以工作。我在 $val = $db->fetch... 上面几行调用它,所以文件链接正确
  • 通过尝试获取 $val - 我试图在之后立即显示它,但它不显示任何内容。
  • 我尝试替换返回的 $result,但没有出现。然后我把它放在顶部,“工作”确实出现了
  • 我刚刚注意到我们尝试的所有 $sql 都进入了 Else 语句 if($result ... === TRUE) {...} else {//这段代码每次都会执行}
猜你喜欢
  • 1970-01-01
  • 2015-08-13
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2018-10-06
  • 2014-05-04
  • 1970-01-01
相关资源
最近更新 更多