[英]PHP OOP Cannot Query mysqli
我一直在苦苦思索如何在以下程序中遵循OOP。
这是我的连接类,它处理我与数据库的连接。
<?php
class Connection{
public $con = null;
public function __construct(){
return $this->con = new mysqli("127.0.0.1:3306", "root", "root", "tester");
}
}
?>
这是我的Helpers类,这个类包含将在我的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()。
我做错了什么?
除了已经给出的答案之外,值中的字符串需要用引号括起来。
即: value ('$name');";
或value ('".$name."');";
这是另一种方法。
旁注:接受value
和values
,并且在MySQL中都被视为有效语法。
根据手册: http : //dev.mysql.com/doc/refman/5.6/en/insert.html
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name,...)]
[(col_name,...)]
{VALUES | VALUE} ({expr | DEFAULT},...),(...),...
有关字符串文字的更多信息,请访问
https://dev.mysql.com/doc/refman/5.0/en/string-literals.html
检查查询中的错误也会发出语法错误信号。
http://php.net/manual/en/mysqli.error.php
旁注:您现在的代码对SQL注入开放。 将mysqli
与准备好的语句一起使用,或者将PDO与准备好的语句一起使用 , 它们会更加安全 。
按如下方式更改课程。 由于传递连接对象,因此需要将其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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.