PHP OOP无法查询mysqli
我已经挣扎了好几天,想知道如何在下面的过程中遵循OOP 下面是我的connection类,它处理与数据库的连接PHP OOP无法查询mysqli,php,oop,mysqli,Php,Oop,Mysqli,我已经挣扎了好几天,想知道如何在下面的过程中遵循OOP 下面是我的connection类,它处理与数据库的连接 <?php class Connection{ public $con = null; public function __construct(){ return $this->con = new mysqli("127.0.0.1:3306", "root", "root", "tester"); } } ?> 这是我
<?php
class Connection{
public $con = null;
public function __construct(){
return $this->con = new mysqli("127.0.0.1:3306", "root", "root", "tester");
}
}
?>
这是我的助手类,这个类包含了所有在我的webapp中使用的常用方法,比如插入数据、删除和更新
<?php
class Helpers{
public $con = null;
public function __construct($connection){
$this->con = $connection;
}
public function register($name){
$con = $this->con;
$sql = "insert into name(Name)value($name);";
$con->query($sql);
}
}
?>
现在我在register.php中这样调用它们
<?php
require "Connection.php";
require "Helpers.php";
$connection = new Connection();
$Helpers = new Helpers($connection);
$Helpers->register("Keannu");
?>
但我得到了以下错误:
调用未定义的方法Connection::query()
我做错了什么?如下更改您的课程。由于要传递连接对象,因此需要将其con属性设置为
$this->con
<?php
class Helpers{
public $con = null;
public function __construct($connection){
$this->con = $connection->con;
}
public function register($name){
$con = $this->con;
$sql = "insert into name (Name) values ($name);";
$con->query($sql);
}
}
除了已经给出的答案,值中的字符串还需要用引号括起来
即:值(“$name”);“;
或值(“$name”);”代码>这是另一种方法
旁注:value
和values
在MySQL中都被认为是有效的语法
根据手册:
- 有关字符串文字的更多信息,请访问
- 检查查询中的错误也会发出语法错误的信号。
旁注:您当前的代码是开放的。使用,或者,它们更安全。既然要包装两次,那么就必须使用$this->con->con->query()
。避免额外的包装。调查PDO而不是mysqli。这最终将减少工作量(特别是对于更简单的参数绑定)。您正在进行双换行,因此它将是con->con
。你应该重新考虑你的结构。Imo@mario好的,现在错误消失了,但没有添加到我的数据库中。请检查错误。值中的语法错误很明显;这是一根绳子。检查错误是编码/调试的一部分,而不是打印mysqli_错误以了解数据库返回的内容。在插入value($name)
Look$Helpers->register(“Keannu”)期间,这仍然会导致语法错误代码>不应该是字符串吗?我应该使用什么数据类型?@Fred ii-也许你应该提供善意的帮助作为答案,OP应该接受:)@Fred ii-是的,Fred我现在要重新编码我知道这个概念了。双重包装和字符串文字。非常感谢你们,把我从几天的挣扎中救了出来。
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name,...)]
[(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...