通过函数传递PHP变量
所以我一直在尝试一些原始的通过函数传递PHP变量,php,mysql,function,connection,Php,Mysql,Function,Connection,所以我一直在尝试一些原始的PHP编码。我的意思是在不使用框架或其他帮助工具的情况下编写PHP 在创建了一些小型初创项目后,我偶然发现了一个问题。请记住,我仍处于学习阶段,因此如果有更好的方法来编写代码,请告诉我 我遇到的问题与连接和插入数据库有关。这种联系是有效的,经过一些研究,我想我找到了通过函数传递变量的方法。(遗憾的是我没有) 我的代码如下所示: 数据库类 <?php /** * Created by: PhpStorm. * Project: Learning_projects
PHP
编码。我的意思是在不使用框架或其他帮助工具的情况下编写PHP
在创建了一些小型初创项目后,我偶然发现了一个问题。请记住,我仍处于学习阶段,因此如果有更好的方法来编写代码,请告诉我
我遇到的问题与连接和插入数据库有关。这种联系是有效的,经过一些研究,我想我找到了通过函数传递变量的方法。(遗憾的是我没有)
我的代码如下所示:
数据库类
<?php
/**
* Created by: PhpStorm.
* Project: Learning_projects
* File name: database.php.
* User: Niels.
* Date: 23-6-2017.
* Time: 11:25.
* File Description: ...
*/
namespace PHP_learning\Database\classes;
class database extends layout
{
/**
* @var $servername = Servername
* @var $username = Username
* @var $password = Password
* @var $db = Database
* @var $conn = Connection DB
*/
protected $servername;
protected $username;
protected $password;
protected $db;
protected $conn;
protected $content;
public function connect() {
$servername = "localhost";
$username = "..";
$password = "..";
$db = "..";
$conn = new \mysqli($servername, $username, $password, $db);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
return $this->conn;
}
public function insert() {
$conn = $this->connect();
$content = "123";
$sql = mysqli_query($conn,"INSERT INTO content (`content`) VALUES ('$content')");
var_dump($sql);
if ($sql === TRUE)
{
echo "<script>alert('Topic 1 ingevoerd.')</script>";
}
else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
}
如您所见,我正试图为insert
函数要求函数connect()
。是的,我可以在insert函数中编写connect,是的,这确实有效,但这不是我想要的
所以如果有人能告诉我我做错了什么,我会非常高兴(:
注:代码样式提示和排序总是受欢迎的(:
提前感谢!使用
$this->conn
而不是再次连接:
public function connect() {
$servername = "localhost";
$username = "..";
$password = "..";
$db = "..";
$this->conn = new \mysqli($servername, $username, $password, $db);
if ($this->conn->connect_error) {
die("Connection failed: " . $this->conn->connect_error);
}
echo "Connected successfully";
return $this->conn;
}
public function insert() {
$content = "123";
$sql = mysqli_query($this->conn,"INSERT INTO content (`content`) VALUES ('$content')");
var_dump($sql);
if ($sql === TRUE)
{
echo "<script>alert('Topic 1 ingevoerd.')</script>";
}
else {
echo "Error: " . $sql . "<br>" . $this->conn->error;
}
}
公共功能连接(){
$servername=“localhost”;
$username=“…”;
$password=“…”;
$db=“…”;
$this->conn=new\mysqli($servername、$username、$password、$db);
如果($this->conn->connect\u错误){
die(“连接失败:”.$this->conn->connect\u错误);
}
echo“连接成功”;
返回$this->conn;
}
公共函数insert(){
$content=“123”;
$sql=mysqli_查询($this->conn,“插入内容(`content`)值('$content'));
变量转储($sql);
如果($sql==TRUE)
{
回声“警报(‘主题1 ingevoerd’)”;
}
否则{
echo“Error:”.$sql.
“$this->conn->Error;
}
}
您从不将任何内容分配给$this->conn
,您只需设置一个局部变量$con
,该变量在连接()时立即销毁
method finished.@jeroen已经考虑过了,但是有没有其他方法,有没有一种方法可以通过这种方法来实现它,而不是设置一个全局变量并传递它。这是我的问题。我不确定你的意思,你是在寻找依赖注入?你可以在这里找到很多相关信息。@jeroen,谢谢(:这就是我要找的是。出现2个错误:1.(!)注意:在第62行的F:\wamp64\www\Learning\u projects\PHP\PHP\u Learning\3\u Database\classes\Database.PHP中尝试获取非对象的属性:::2.警告:mysqli\u query()预期参数1为mysqli,在第53行的F:\wamp64\www\Learning\u projects\PHP\PHP\u Learning\3\u Database\classes\Database.PHP中为空。您是否更改了connect()
方法?不,它仍然如我的问题中所述,当然是连接凭据。在connect
中也更改$this->conn
。请参阅我的答案
public function connect() {
$servername = "localhost";
$username = "..";
$password = "..";
$db = "..";
$this->conn = new \mysqli($servername, $username, $password, $db);
if ($this->conn->connect_error) {
die("Connection failed: " . $this->conn->connect_error);
}
echo "Connected successfully";
return $this->conn;
}
public function insert() {
$content = "123";
$sql = mysqli_query($this->conn,"INSERT INTO content (`content`) VALUES ('$content')");
var_dump($sql);
if ($sql === TRUE)
{
echo "<script>alert('Topic 1 ingevoerd.')</script>";
}
else {
echo "Error: " . $sql . "<br>" . $this->conn->error;
}
}