【问题标题】:get returned value from php function [duplicate]从php函数获取返回值[重复]
【发布时间】:2021-12-24 19:40:09
【问题描述】:

我的 ajax 调用会发布数据 loadingaid1 以及其他一些数据。然后在我的 php 文件中请求该值并将其分配给$loadingaid1。到目前为止,一切都很好。 我知道要做的是调用函数getProductId,它从我的数据库中选择相应的ID,并用该ID覆盖变量$loadingaid1

我试过的代码如下:

(...)
$loadingaid1 = $_REQUEST['loadingaid1'];
$loadingaid1 = getProductId($loadingaid1);
(...)

function getProductId($product) {
   $stmt = $conn->prepare('SELECT idproducts FROM products WHERE title = :product LIMIT 1');
   if ($stmt->execute(array(':product' => $product))) {
      $row = $stmt->fetch(PDO::FETCH_ASSOC);
      return $row['idproducts'];
   };
}

但不知何故,一旦我将函数带入游戏,代码总是会失败。我做错了什么?

准备好的语句是正确的 - 已经将它与我的列和表名以及基本上做同样事情的工作语句进行了多次比较。而且loadingaid1中保存的请求值也存在于表中。

【问题讨论】:

  • $conn 未定义
  • “代码总是失败”——这是什么意思?您可以分享任何错误消息吗?另外,请注意getProductId 在所有情况下都不会返回任何内容
  • @PeteB 成功了!还不完全明白为什么,但我一定会调查的!非常感谢大家的帮助!
  • 现在,请停止使用global。这是一种不好的做法。阅读我链接的答案,了解如何将变量作为参数传递给您的函数。
  • @PeteB 你没有得到任何点赞的 cmets,只适用于答案

标签: php sql pdo


【解决方案1】:

$conn 未定义!!!!!!!在你的函数范围内,$conn 是未定义的!!!如果你愿意,让它成为全球性的:

在您的 connection.php 中将其声明为全局

global $conn = ......

在你的函数内部

function getProductId($product) {
   global $conn;

   $stmt = $conn->prepare('SELECT idproducts FROM products WHERE title = :product LIMIT 1');
   if ($stmt->execute(array(':product' => $product))) {
      $row = $stmt->fetch(PDO::FETCH_ASSOC);
      return $row['idproducts'];
   };
}

这是简单的方法,但也许你不想使用 global.这是另一种方式:定义一个类,其方法返回您的 $conn 对象。我让这个你自己。您的 getProductId() 函数将是:

function getProductId($product) {
       $stmt = Db::getInstance()->prepare('SELECT idproducts FROM products WHERE title = :product LIMIT 1');
       if ($stmt->execute(array(':product' => $product))) {
          $row = $stmt->fetch(PDO::FETCH_ASSOC);
          return $row['idproducts'];
       };
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2020-01-17
    相关资源
    最近更新 更多