【问题标题】:Assigning rows to variables using MySQLi and PHP使用 MySQLi 和 PHP 将行分配给变量
【发布时间】:2014-01-11 23:43:30
【问题描述】:

在使用 MySQL 一段时间后,我才刚刚开始接触 MySQLi。我在一个教程中找到了这个小代码 sn-p,并且对此有疑问(因为 Google 不会为我返回任何结果......)。

<?php 

$link = mysqli_connect("127.0.0.1", "user", "password", "world"); 

if (!$link)
{
    $error = mysqli_connect_error();
    $errno = mysqli_connect_errno();
    print "$errno: $error\n";
    exit();
}

$query = "SELECT Name, Population, Continent FROM Country WHERE Continent=? ORDER BY Name LIMIT 1";

$stmt = mysqli_stmt_init($link);
if(!mysqli_stmt_prepare($stmt, $query))
{
    print "Failed to prepare statement\n";
}
else
{
    mysqli_stmt_bind_param($stmt, "s", $continent);

    $continent_array = array('Europe','Africa','Asia','North America');

    foreach($continent_array as $continent)
    {
        mysqli_stmt_execute($stmt);
        $result = mysqli_stmt_get_result($stmt);
        while ($row = mysqli_fetch_array($result, MYSQLI_NUM))
        {
            foreach ($row as $r)
            {
                print "$r ";
            }
            print "\n";
        }
    }
}
mysqli_stmt_close($stmt);
mysqli_close($link);
?>

感谢http://www.php.net/manual/en/mysqli-stmt.get-result.php

如果我正确理解了这一点,那么$r 现在将创建一个数组,其中包含在所有调用行中找到的所有结果。如何为每一行分配一个变量?我还能像在 MySQL 中那样做类似的事情吗?

$username = $row['username'];

或者现在有什么完全不同的东西?

【问题讨论】:

    标签: php mysqli


    【解决方案1】:

    while 循环中,您可以使用变量$row,它将表示当前行的内容。因此,您可以在循环之前创建一个数组,并将每一行分配给该循环内数组中的一个新索引。循环执行完成后,您的数组将被填充。

    $arrayVar = array();
    while ($row = mysqli_fetch_array($result, MYSQLI_NUM))
    {
      $arrayVar[] = $row[];
    }
    

    【讨论】:

    • 我添加了一个例子=)
    【解决方案2】:

    例如; 我们有我们正在选择的名称、人口、大陆列。

    Name | Population | Continent
    X    |  1         |  A
    Y    |  2         |  B
    Z    |  3         |  C
    

    这些是作为此查询结果返回的行..

    在第一次迭代中,你会得到这样的$row

    array("Name"=> "X", "Population"=>"1", "Continent"=>"A");
    

    在第二次迭代中,你会得到这样的$row

    array("Name"=> "Y", "Population"=>"2", "Continent"=>"B");
    

    等等。 所以,你可以像你提到的那样使用它(比如$row["Name"]

    【讨论】:

    • 我现在正在尝试测试它,但我不知道如何让它与 $link 变量一起工作,因为我只包含 config.php 而不是让它连接到该文件中。呃,我希望 mysql 没有被弃用。
    • 您在哪里遇到了麻烦?你的 config.php 里面有什么?
    • 我的 config.php 里面只有mysqli_connect("localhost", "mike_market", "passwordremoved", "mike_market");。那应该有效,对吧?但是在上面的脚本中,如果我删除连接,那么$link 将不再执行任何操作。
    • 简单的方法是在你的配置文件中定义常量,比如define("DB_HOST_NAME", "localhost");define("DB_USERNAME", "username");define("DB_PASSWORD", "password");define("DB_NAME", "my_database");然后在你的主文件中..这样做$link = mysqli_connect(DB_HOST_NAME, DB_USERNAME, DB_PASSWORD, DB_NAME);
    • 为什么我不希望它一直连接,只连接现在的方式并将其包含在每个文件的顶部?现在有什么不同?
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多