0

我正在创建一个简单的 php 用户系统,我有一个用户类,并且我正在使用用户类中的这个函数(添加)存储新的用户值:

    private function NewUser($nome, $email, $tel, $cidade, $estado, $aniversario) {
    $this -> name = mysql_real_escape_string($nome);
    $this -> email = mysql_real_escape_string($email);
    $this -> telefone = mysql_real_escape_string($tel);
    $this -> cidade = mysql_real_escape_string($cidade);
    $this -> estado = mysql_real_escape_string($estado);
    $this -> dia = substr($aniversario, 0, 2);
    $this -> mes = substr($aniversario, 3, 2);
    $this -> ano = substr($aniversario, 6);

    }

    public function Add($nome, $email, $tel, $cidade, $estado, $aniversario) {
    $this -> NewUser($nome, $email, $tel, $cidade, $estado, $aniversario);
    $Create_query = "INSERT INTO user (nome, email, telefone, cidade,    estado,      dia, mes, ano) VALUES ('{$this -> name}', '{$this -> email}',
    '{$this -> telefone}', '{$this -> cidade}', '{$this -> estado}', '{$this -     > dia}', '{$this -> mes}', '{$this -> ano}')";
    $query_user = connectdb::sql_query($Create_query); // my connect class
    if ($query_user) {
        $answer = array('done' => 'done');
        echo json_encode($answer);
    }
    else {
        validate::returnError();
    }
     }

如果我尝试使用 $this -> 属性或 '$this -> 属性' 运行插入,我得到类用户的对象无法转换为字符串错误,但如果我运行为 '{$this -> 属性} '有用。我在堆栈溢出答案中找到了这些 {} 方法,但没有详细信息,有人可以解释为什么这样做,以及它是否安全/正确?感谢您的时间。

4

1 回答 1

1

要回答有关花括号的问题:花括号用于显式指定变量名称的结尾。

一些例子可以在这里看到:http: //docs.php.net/manual/en/language.variables.variable.php

至于错误(Object of class User...):问题是$this -> attribute. 由于您在字符串中使用它们,因此空格被解释为它们是什么,空格。因此它尝试仅转换$this为字符串,这是不可能的(请参阅错误)。如果您使用花括号,php 可以准确地知道变量何时开始以及何时结束。

另一方面:尝试使用 PDO 而不是简单的 mysql_query ...看看这里: http: //php.net/manual/de/book.pdo.php

于 2013-10-26T23:32:31.530 回答