PHP 从表行检索数据并存储到变量

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/22176907/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-25 04:42:55  来源:igfitidea点击:

PHP retrieve data from table row and store to variable

phpmysql

提问by CudoX

i guess the questions says it all. The result of my query results into a row which will match the condition. I want to get each data from each table column and put into a variable.

我想问题说明了一切。我的查询结果变成了与条件匹配的行。我想从每个表列中获取每个数据并放入一个变量中。

$getinfo = "select 
                   user_firstname, 
                   user_middlename, 
                   user_lastname 
              from tempuserinfo 
             where user_email ='$ead' 
               and activation_code='$eac'";

$query = mysql_query($getinfo, $db);
if(!$query) {
    echo'something went wrong.';
} else {
    //put them into variables
    $firstname = mysql_fetch_object($query, 'user_firstname');
    $middlename = mysql_fetch_object($query, 'user_middlename');
    $lastname = mysql_fetch_object($query, 'user_lastname');
}

回答by Quixrick

If you are getting multiple results, you can loop through them like this:

如果你得到多个结果,你可以像这样循环遍历它们:

$getinfo = "select user_firstname, user_middlename, user_lastname from tempuserinfo where user_email ='$ead' and activation_code='$eac'";
$query = mysql_query($getinfo, $db);

while ($row = mysql_fetch_array($query)) {
    $firstname = $row['user_firstname'];
    $lastname = $row['user_lastname'];
}

If you are only getting one row back (make sure you add a LIMIT to your SQL statement), then you can use something like this:

如果你只得到一行(确保你在 SQL 语句中添加了一个 LIMIT),那么你可以使用这样的东西:

$getinfo = "select user_firstname, user_middlename, user_lastname from tempuserinfo where user_email ='$ead' and activation_code='$eac'";
$query = mysql_query($getinfo, $db);

$row = mysql_fetch_array($query);

$firstname = $row['user_firstname'];
$lastname = $row['user_lastname'];

回答by Pank

mysql_* function are deprecated. In documentation its recommended like in latest versions of PHP they are going to use mysqli_* or PDO.

不推荐使用 mysql_* 函数。在它推荐的文档中,就像在最新版本的 PHP 中一样,他们将使用 mysqli_* 或 PDO。

Below are the script using mysqli for your question:

以下是使用 mysqli 解决您的问题的脚本:

$mysqli = new mysqli("localhost", "root_user", "root_password", "database");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$getinfo = "select 
                   user_firstname, 
                   user_middlename, 
                   user_lastname 
              from tempuserinfo 
             where user_email ='$ead' 
               and activation_code='$eac'";



if ($result = $mysqli->query($getinfo)) {    
     while ($row = $result->fetch_object()) {
        $firstname = $row->user_firstname;
        $middlename = $row->user_middlename;
        $lastname =$row->user_lastname;
    }
    $result->close();
}
else
{
   echo'something went wrong.';
}

回答by jolsalazar

an example with mysqli, mysql as this deprecated

一个 mysqli 的例子,mysql 因为这个已弃用

$sql = "select user_firstname, user_middlename, user_lastname from tempuserinfo where user_email ='$ead' and activation_code='$eac'";

$query = mysqli_query($conn, $sql);
while($rs = mysqli_fetch_assoc($query)){
    $user_firstname = $rs['user_firstname'];
    $user_middlename = $rs['user_middlename'];
    $user_lastname = $rs['user_lastname'];
}

if you want to have all fields in order to consult them later, add them to an array

如果您想拥有所有字段以便以后查阅它们,请将它们添加到数组中

$i=0;
while($rs = mysqli_fetch_assoc($query)){
    $data[$i] = array('user_firstname'=>$rs['user_firstname'], 'user_middlename'=>$rs['user_middlename'], 'user_lastname'=> $rs['user_lastname']);

    $i++;
}

print_r($data);

回答by Tero Lahtinen

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

    try {
        $dbh = new PDO($dsn, $user, $password);
    } catch (PDOException $e) {
        echo 'Connection failed: ' . $e->getMessage();
    }
    try {
      $sth = $dbh->prepare("select user_firstname, user_middlename, user_lastname from tempuserinfo where user_email = ? and activation_code=?");
      $sth->execute(array($ead,$eac));
      $row = $sth->fetch(PDO::FETCH_BOTH);
      $user_firstname = $row['user_firstname'];
      $user_middlename = $row['user_middlename'];
      $user_lastname = $row['user_lastname'];
} catch (PDOException $e) {
        echo 'Database operation failed: ' . $e->getMessage();
    }

Really, do learn to use PDO, because it is as easy as using mysql_*, but much safer and better.

真的,一定要学会使用PDO,因为它和使用 mysql_* 一样简单,但更安全更好。

回答by fejese

This should work:

这应该有效:

$result = mysql_fetch_object($query);
$firstname = $result->user_firstname;
$middlename = $result->user_middlename;
$lastname = $result->user_lastname;

BUT:Use MySQLi or PDO sintead mysql module is deprecated already

但是:使用 MySQLi 或 PDO sentiad mysql 模块已被弃用