理解变量和范围

时间:2011-10-11 12:55:29

标签: php

编辑***我的问题有点难以理解......让我再试一次。

我在理解变量和执行其值的方式时遇到问题。

例如。

如果我说

$var name= 'mike';

然后,如果我测试页面,则不会显示任何内容,因为HTML上没有任何内容请求mike的值。

如果我做了

echo $name;
然后页面会显示mike .....

说,如果我现在这样做:

$connect2db = mysqli_connect('values here');
if(!$connect2db){
    die("error connecting to the database" . mysqli_error);}

$db_query = mysqli_query($connect2db, "INSERT INTO email_list(email, firstname, lastname)
                VALUES ('$email', '$fname', '$lname')");

用于将这些值从表单插入到db, 我不明白如何调用与db的连接和命令,因为对我来说

$ connect2db等于“那些命令”,但没有任何东西在调用它。所有$ connect2db等于字面意思是一旦调用它就会采取的指令。

在这块代码中,连接被调用/发挥作用?这个代码块的位置是被调用为动作的代码(就像上面的echo调用$ name来实现它的值“???。

我没有在connect2db变量上看到任何调用其动作/连接属性的变量。

例如,如果我要说

if(is true){
this.$db_query; 
}

我知道,这对我来说意味着如果某事评估为真,那就做中间的事情。

使用原始的第一个代码块,它就像变量一样命名并同时调用自身。

3 个答案:

答案 0 :(得分:1)

$connect2db包含描述活动连接的资源mysqli_query()期望将资源作为第一个参数,因为它需要知道应该使用哪个连接来执行它所做的事情。 “动作”的开始主要是因为你调用了函数并告诉它使用什么值来完成它的工作。

答案 1 :(得分:1)

参考

$connect2db = mysqli_connect('values here');
你提到:

  

$ connect2db等于“那些命令”,但没有任何东西在调用它。所有   $ connect2db等于字面意思是它的指令   打电话。

不是真的。 mysqli_connect是一个函数,使用该语法(functionname(argument))实际上调用该函数$connect2db用于存储该函数的返回值。

总结那条线上发生的事情:

  • 调用名为mysqli_connect的现有函数。这个 执行该功能。
  • 该函数的返回值存储在名为$connect2db
  • 的变量中

管理此分配的规则由operator precedence定义,在这种情况下,指定在分配之前评估函数调用。

要知道返回的类型,必须查看此函数的API文档,在这种情况下,它是一个对象(表示与服务器的连接)。


现在可以让变量包含一个函数,就像你认为你的例子意味着的那样。这个的语法 - 称为匿名函数,就像这样:

$greet = function($name)
{
    printf("Hello %s\r\n", $name);
};

您可以看到而不是格式:

  

functionname +括号+参数+括号+分号

格式为:

  

function +括号+参数+括号+开括号   +函数定义+紧括括号+分号

在这种情况下,变量保存函数的功能,函数没有执行,并执行它,您将使用第一种格式:

$greet('World');

请注意,此格式仅在PHP 5.3中提供,在此之前需要使用create_function


相关链接:

答案 2 :(得分:0)

我认为它真的听到了解你的问题:) 所以我尽我所能:)

如果您要通过$ name打印'Mike',则必须注册变量

<?php

    $name = 'Mike';
    echo $name;

?>

这甚至适用于Classes

<?php 

    class Names {

        /* Set the default to Mike */
        var $name = 'Mike';

        /* Get the Name */
        public function getName() {
            echo $this->name;
        }

        /* Override the Name */
        public function setName($name = NULL) {
            if($name != NULL) {
                $this->name = $name;
            }
        }

    }

?>

为了构建与数据库的连接,我建议阅读http://php.net/manual/en/mysqli.query.php有一些真正有用的脚本

迎接