【问题标题】:PHP tag is closing with code in query $db->PHP 标记以查询 $db-> 中的代码关闭
【发布时间】:2022-01-25 09:00:16
【问题描述】:

请原谅我,因为我已经多年没有在 php 中工作了。我正在获取一些旧代码以重新开始工作,但遇到了一个奇怪的问题。

我正在用 wordpress 编写 php。在编辑代码时,我注意到 php 标记在以下内容之后关闭:

<?php
$databaseHost = "Localhost";
$databaseName = "testDB";
$databaseUser = "TESTUSER";
$databasePassword = "TESTPASS";

$coin_id = (isset($_POST['coin_id'])) ? $_POST['coin_id'] : '';

try {
    $db = new PDO('mysql:host=' . $databaseHost . ';dbname=' . $databaseName . ';charset=utf8', $databaseUser, $databasePassword);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $request = "SELECT
    _7UR_participants_database.city,
            _7UR_participants_database.state,
            _7UR_participants_database.country,
            _7UR_participants_database.zip,
            _7UR_participants_database.coin_id,
            FROM _7UR_participants_database GROUP BY _7UR_participants_database.coin_id ASC";           
$stmt = $db->query($request);
$item_info = $stmt->fetchAll(); 
} catch (PDOException $e) {
    echo "Exception: " . $e->getMessage(); 
    exit;
} // Try / catch end
?>

之后的所有内容> $db- 不包含在 php.ini 文件中。 php 标记以最后一个 > 结束。我需要逃避角色或类似性质的东西吗?

【问题讨论】:

  • 我并没有真正理解这个问题。你是说$db-&gt; 关闭了 PHP 上下文?它不会。然后还有其他一些抱怨。但是,如果您只拥有 $db-&gt; 而没有定义方法或属性,则会出现语法错误。
  • 是的,正如您提到的,它似乎正在关闭标签。 $db-> 之后还有更多内容。为简洁起见,我省略了它,但我会在看到它有多令人困惑时对其进行编辑。
  • 不,它不会关闭那里的 php 上下文。请向我们展示更多上下文(之后的代码)以及您认为它被关闭的原因。
  • 我已经编辑了代码。有问题的 > 以外的所有内容都以纯文本形式显示在网页上。澄清 - setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);网页上显示及其他内容,好像它已关闭 php 标签。
  • 如果您在 WP 中的帖子的内容块中添加了该代码,那么不,它不会起作用。 Wordpress 只是输出内容,它不会作为 PHP 执行。

标签: php html wordpress


【解决方案1】:

因为你的格式很难理解,我会根据自己的喜好重写它,因为它“migth”确实有效

 $dsn = "mysql:host=localhost;dbname=testDB;charset=utf8mb4";  // most cool kids use charset=utf8mb4 
        $options = [
          PDO::ATTR_EMULATE_PREPARES   => false, // turn off emulation mode for "real" prepared statements
          PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION, //turn on errors in the form of exceptions
          PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, //make the default fetch be an associative array
        ];
        try {
          $dbh = new PDO($dsn, "TESTUSER", "TESTPASS", $options);
        } catch (Exception $e) {
          error_log($e->getMessage());
          echo ("Error Code: " . $e->getCode() . "<br>"); // never use echo on public release build it would leak your database credential this is optional great for troubleshooting 
          echo ("Error Message: " . $e->getMessage() . "<br>");
          exit('Something weird happened');//
        }
       $request = $dbh->prepare("SELECT
        _7UR_participants_database.city,
                _7UR_participants_database.state,
                _7UR_participants_database.country,
                _7UR_participants_database.zip,
                _7UR_participants_database.coin_id,
                FROM _7UR_participants_database GROUP BY _7UR_participants_database.coin_id ASC";
                
    $request->execute([]);  // you do not have something like this also i never put value since i don't know what your doing
    $item_info = $request->fetchAll(); // store the fetched on $item_info also you need to indicate what data type you fetching by default it always PDO::FETCH_ASSOC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多