【问题标题】:PHP Function re-write for PDO为 PDO 重写 PHP 函数
【发布时间】:2011-10-06 13:36:45
【问题描述】:

我可以为 PDO 或 mysqli 重写这个函数吗?如果有,请举个例子。

function dbquery($query) {
    global $mysql_queries_count, $mysql_queries_time; $mysql_queries_count++;

    $query_time = get_microtime();
    $result = @mysql_query($query);
    $query_time = substr((get_microtime() - $query_time),0,7);

    $mysql_queries_time[$mysql_queries_count] = array($query_time, $query);

    if (!$result) {
        echo mysql_error();
        return false;
    } else {
        return $result;
    }
}

function dbrows($query) {
    $result = @mysql_num_rows($query);
    return $result;
}

function dbarray($query) {
    $result = @mysql_fetch_assoc($query);
    if (!$result) {
        echo mysql_error();
        return false;
    } else {
        return $result;
    }
}

<?php $result = dbquery("SELECT * FROM ".DB_THREADS." INNER JOIN ".DB_USERS." WHERE thread_lastuser=user_id ORDER BY thread_lastpost DESC LIMIT 5");
if (dbrows($result) != 0) {
while ($data = dbarray($result)) { 
<?php echo $data['thread_id'];
<?php } } ?>

谢谢

【问题讨论】:

  • 杰克,这不是一个“为我编码”的网站。您可以尝试自己的方法,然后针对您遇到的问题或确实遇到的错误提出问题。
  • 你想重写哪个函数,因为除非我弄错了,否则你已经发布了 3 个函数!

标签: php mysql function pdo


【解决方案1】:

以下是使用 PDO 重写的代码:

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';

try {
    $db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    die();
}

function dbquery($query) {
    global $db, $mysql_queries_count, $mysql_queries_time; $mysql_queries_count++;

    $query_time = get_microtime();
    $result = $db->query($query);
    $query_time = substr((get_microtime() - $query_time),0,7);

    $mysql_queries_time[$mysql_queries_count] = array($query_time, $query);

    if (!$result) {
        echo $db->errorCode();
        return false;
    } else {
        return $result;
    }
}

function dbrows($query) {
    global $db;
    $result = $db->exec($query);
    return $result;
}

function dbarray($results) {;
    $result = $results->fetch(FETCH_ASSOC);
    if (!$result) {
        echo $results->errorCode();
        return false;
    } else {
        return $result;
    }
}

<?php $results = dbquery("SELECT * FROM ".DB_THREADS." INNER JOIN ".DB_USERS." WHERE thread_lastuser=user_id ORDER BY thread_lastpost DESC LIMIT 5");
if (dbrows($results) != 0) {
while ($data = dbarray($results)) { 
<?php echo $data['thread_id'];
<?php } } ?>

我做了尽可能少的更改,只是为了向您展示 PDO 的功能,所以我没有对其进行一些可能的改进。欲了解更多信息,请查看the documentation for PDO

【讨论】:

  • 没想到有人真的会重写那段代码……你会得到 +1 :)
【解决方案2】:

【讨论】:

  • 对不起,不问你是否可以重写所有它。只是提供一个例子。上述函数是否可以在不更改代码查询的情况下编辑并按原样用于 PDO 使用。
  • 如果您查看我的链接,您将在 30 分钟内了解有关 pdo 的所有信息。 如果你给一个人一条鱼,你可以喂他一天,如果你教一个人钓鱼,你会喂他一辈子。 ...是的,查询可以是一样的。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-04
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
相关资源
最近更新 更多