获取 PHP 函数中声明的变量的值

Posted

技术标签:

【中文标题】获取 PHP 函数中声明的变量的值【英文标题】:Get the value of a variable declared in a PHP function 【发布时间】:2015-01-13 05:39:44 【问题描述】:

我有 2 个页面,“signup.php”和“globalfunctions.php”。在 signup.php 上,我从表单提交中获取所有信息,对密码进行哈希处理(通过附加 globalfunctions.php 中生成的随机字符串),并使用我定义的函数 executeSQL

signup.php:

include('/home/www/portaldev.samgoodman.co/processes/globalfunctions.php');
$singleAppendString = generateRandomAppend(16);
$form_email = $_POST['email'];
$form_password = $_POST['password'];
$form_name = $_POST['name'];
$form_school = $_POST['schoolid'];
$form_grad = $_POST['gradyear'];
$form_ip = $_SERVER['REMOTE_ADDR'];
$password_with_hash = $form_password.$singleAppendString;
$hashedPassword = sha1($password_with_hash);

executeSQL("$nextUserQuery", "SELECT id FROM users ORDER BY id DESC LIMIT 0 , 1");

这里是我想从数据库中获取$nextUserQuery的值,但我需要在函数中返回值。

executeSQL("$insertUser", "INSERT INTO users (id, name, email, password, school_id, grad_year, lvl, signup_ip) VALUES ('".$calc_userid."', '".$form_name."', '".$form_email."', '".$hashedPassword."', '".$form_school."', '".$form_grad."', '0','".$form_ip."')");
executeSQL("$insertHash", "INSERT INTO vault (id, hash) VALUES ('".$calc_userid."', '".$singleAppendString."')");

globalfunctions.php

function generateRandomAppend($length) 
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randomString = '';
    for ($i = 0; $i < $length; $i++) 
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    
    return $randomString;


function executeSQL($varName, $query) 
    global $varName;
    $con=mysqli_connect("localhost", "hugopak1_spm", "Massavailable1", "hugopak1_spm");
    $varName = mysqli_query($con, $query);
    return $varName;

【问题讨论】:

你能用一些不同的话解释一下吗?在这里很难得到你想要做的事情。 为什么executeSQL函数中有$varName参数? 我试图在函数 executeSQL() 中命名一个变量,然后调用该变量,因此通过返回 $varName,我应该能够返回我定义的变量的内容。 【参考方案1】:

您当前所做的不是获取executeSQL 函数返回值的正确方法。从executeSQL函数中删除$varName参数

function executeSQL($query) 
    $con = mysqli_connect("localhost", "hugopak1_spm", "Massavailable1", "hugopak1_spm");
    $varName = mysqli_query($con, $query);
    return $varName;

并声明一个保存返回值的新变量

$nextUserQuery = executeSQL("SELECT id FROM users ORDER BY id DESC LIMIT 0 , 1");

在上面的例子中,$nextUserQuery 的值就是executeSQL("SELECT id FROM users ORDER BY id DESC LIMIT 0 , 1") 返回的值。您应该对其他两行应用相同的内容,如下所示

$insertUser = executeSQL("INSERT INTO users (id, name, email, password, school_id, grad_year, lvl, signup_ip) VALUES ('".$calc_userid."', '".$form_name."', '".$form_email."', '".$hashedPassword."', '".$form_school."', '".$form_grad."', '0','".$form_ip."')");
$insertHash = executeSQL("INSERT INTO vault (id, hash) VALUES ('".$calc_userid."', '".$singleAppendString."')");

【讨论】:

以上是关于获取 PHP 函数中声明的变量的值的主要内容,如果未能解决你的问题,请参考以下文章

php学习笔记

PHP变量的使用

PHP之变量函数

PHP 闭包获取外部变量和global关键字声明变量的区别

php static 变量声明

C语言getenv()函数的用法?(获取系统某个环境变量字符串名的值)