【问题标题】:PHP/mysql fetch multiple variables in arrayPHP/mysql 获取数组中的多个变量
【发布时间】:2014-09-25 19:19:51
【问题描述】:

我是 PHP 新手。我想在另一个表中创建一条新记录,但只返回一个新变量。我试过以下:

$user_id = mysql_real_escape_string($_POST['user_id']);
$user_name = mysql_query("SELECT user_name FROM accept WHERE user_id=".$user_id." ");
$row1 = mysql_fetch_array($user_name);
$server = mysql_query("SELECT server FROM accept WHERE user_id=".$user_id." ");
$row2 = mysql_fetch_array($server);
$url = mysql_query("SELECT link FROM accept WHERE user_id=".$user_id."");
$row3 = mysql_fetch_array($url);
$lpoints = mysql_real_escape_string($_POST['lpoints']);

我的结果是这样的。

【问题讨论】:

  • mysql_fetch_array() 返回一个数组,而不是一个标量值。您直接插入这些数组,PHP 表示为Array。你的意思是做$row3 = mysql_fetch_array($url); $url = $row3['url']; 之类的事情但是,你应该在一个查询中得到所有这些。 SELECT user_name, server, link FROM accept WHERE user_id = $user_id
  • 例如使用var_dump($row1) 来查看返回的样子。
  • 现在,话虽如此,不应该使用mysql_*() 函数编写新代码。它们已被弃用,并将很快从 PHP 中删除。相反,您应该使用准备好的语句开始使用 PDO 或 MySQLi。有关两者的实际示例,请参阅this questionThis excellent PDO tutorial 将 PDO 置于 mysql_*() 函数的上下文中(如果您已经熟悉这些函数)。

标签: php mysql arrays fetch


【解决方案1】:

首先,将您的查询合并为一个:

$user_id = mysql_real_escape_string($_POST['user_id']);
$user_info = mysql_query("SELECT user_name, server, link FROM accept WHERE user_id=".$user_id." ");
$row = mysql_fetch_array($user_info);
$lpoints = mysql_real_escape_string($_POST['lpoints']);

为了创建新记录,您需要 INSERT INTO,更改现有记录使用 UPDATE。

当您从数据库中获取信息时,它将是一个数组,因此您需要相应地使用它。所以本质上,要使用变量,它将是这样的:

$row['user_name']$row['server'] 等..

另外,请考虑改用 mysqli。您将需要更改连接脚本和其他一些语法,但需要完成。 mysql 已被弃用,不安全,并且没有未来的支持,因此您以后需要更改它。

【讨论】:

    【解决方案2】:

    您应该使用 pdo 或 mysqli,这是您的代码;

      $user_id = &$_POST["user_id"];
        if($user_id){
            $result = mysql_query("select user_name,server,link,lpoints from accept where user_id='".mysql_real_escape_string($user_id)."'");
            /*You should use single quotes for escaping sql injection*/
            if($result){
                $vars = mysql_fetch_array($result);
                if($vars){
                    list($username,$server,$link,$lpoints) = $vars;
                }
                else{
                    //do something with errors
                }
                mysql_free_result($result);
            }
            else{
                //do something with errors
            }
        }
        else{
            //do something with errors
        }
    

    【讨论】:

      【解决方案3】:

      试试这个-

      $user_id = mysql_real_escape_string($_POST['user_id']);
      $result = mysql_query("SELECT user_name, server, link FROM accept WHERE user_id=".$user_id." ");
      $row=mysql_fetch_array($result)
      $row1=$row['user_name'];
      $row2=$row['server'];
      $row3=$row['link'];
      $lpoints = mysql_real_escape_string($_POST['lpoints']);
      

      现在您可以根据需要使用数据插入或更新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-08
        • 2021-09-01
        • 2011-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多