【问题标题】:MySQL: Get a certain rowMySQL:获取某一行
【发布时间】:2010-10-31 20:24:19
【问题描述】:

我在 MySQL 上有这张表。我想查询port 号码的user_ids 1 和2。

umeta_id user_id meta_key meta_value ------------------------------------------ 1 1 昵称 管理员 8 1 用户目录 D 9 1 个端口 8080 10 1 paymentopt 银行 13 2 端口 8081 20 2 a_renew 1240098300 21 2 用户目录 D 22 2 支付选项贝宝

我如何在 PHP 中做到这一点?

谢谢!

【问题讨论】:

  • 那是一个设计糟糕的数据库...你能控制它吗?如果是这样,我认为更改架构将是最好的主意。
  • 它实际上来自 wordpress,wordpress usermeta 数据库表,所以我需要几行来与另一台服务器通信。

标签: php mysql wordpress


【解决方案1】:

一个非常简单的示例代码应该基于来自http://uk.php.net/manual/en/mysqli-result.fetch-row.php的示例工作

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT `umeta_id`, `user_id`, `meta_key`, `meta_value` FROM TableName WHERE (`user_id` = 1 OR `user_id` = 2) AND (`meta_key` = 'port')"; //You will need to change TableName to whatever your table is called.

if ($result = $mysqli->query($query)) {

    /* fetch object array */
    while ($row = $result->fetch_row()) {
        echo $row[3];
    }

    /* free result set */
    $result->close();
}

/* close connection */
$mysqli->close();
?>

【讨论】:

  • 这样更好,+1。 :-) 我会使用 fetch_assoc() 和 $row['meta_value'],但这是个人喜好问题。
【解决方案2】:

我会用这个代替上面建议的:

SELECT * FROM table WHERE user_id IN (1,2) AND meta_key = 'port'

这也将使处理数组等变得更容易和更漂亮:

<?php
$users = array(1,2,3,4,5);
$sql = sprintf("SELECT * FROM table WHERE user_id IN (%s) AND meta_key = 'port'", implode(",", $users));
?>

注意! 如果用户数组不安全,请记住检查输入。例如,如果它是用户输入的结果。在这种情况下,你想做类似的事情:

<?php
$users = array_map($users, 'mysql_real_escape_string');
?>

【讨论】:

  • -1 是针对“sprintf(sqlstring)”而不是针对“SELECT *”,恕我直言。
【解决方案3】:
SELECT * FROM table  
WHERE user_id = 1
    AND meta_key = 'port'

user_id = 2 执行相同操作,或者如果您想同时检索两个用户的端口,请在一个查询中执行此操作:

SELECT * FROM table 
WHERE (user_id = 1 OR user_id = 2)
    AND meta_key = 'port'

这个答案只反映了 SQL 部分 - 我假设您知道如何使用所需的 MySQL 库(ext/mysqlext/mysqliext/PDO)向 MySQL 服务器发送查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-20
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多