mysqli PHP扩展(“MySQL改进”)是PHP数据库驱动程序,包含自PHP 5以来。它利用了MySQL 4.1.3和更新版本中引入的新功能。
我需要帮助为以下场景编写 SQL VIEW 查询: 这是我尝试过的查询,但它只返回匹配的数据,因为任何人 user_id 都与任何配方匹配:
我有这个 $容器= [ 0 => [ '信息' => ['id' => 1, '类别' => 'МКД'], '公式' => ['tkoSum' => '12', 'chko' => '15'] ], 1 => [ ...
我使用 typeorm join 而不在表中建立关系。这是我的查询: 让查询 = userRepository.createQueryBuilder("u") .where("u.academicYear = :year", { 年 }) .
我正在使用 typerom join,而不在我的查询表中建立关系 让查询 = userRepository.createQueryBuilder("u") .where("u.academicYear = :year", { 年 }) .
这个问题有点难以表述,但基本上我有一个表格。 这是一种帐户信息表单,人们可以在其中更改与其帐户关联的信息。 问题是
如何将图像保存到我的 phpmyadmin 数据库中? [已关闭]
我正在使用 PHP、CSS 和 JS 构建一个博客。我从 chatGPT 得到了很多帮助,因为我不太擅长。我已经被这个管理页面困住了 4 天,其中
为什么 mysqli_fetch_assoc 报告嵌套循环异常
我正在使用以下代码示例: $ca=$db->query('SELECT * FROM `clients`'); 而 ($c=$ca->fetch_assoc()) { 尝试 { $mysqli->query('ALTER TABLE `client_'.$c['id'].'_data` ADD
new mysqli():如何拦截“无法连接”错误? [重复]
我正在这样做(是的,我使用了错误的连接数据,这是为了强制连接错误) 尝试 { $connection = new mysqli('localhost', 'my_user', 'my_password', 'my_db') ; } catch (异常 $e ...
我是一个PHP新玩家,我从书本上练习PHP和SQL。 我练习这个代码。见img1 图像1 如果数据库连接成功,系统会显示“连接成功”。 但我故意设置不
我在sql数据库中有两个表,第一个是预订,它有客户详细信息,另一个是booking_line,它已经由客户购买了产品历史记录,现在我希望这两个结果都在一个像下面这样的数组中...
我试图让我的mysql数据库在选中/取消选中复选框时更新列中的值。这适用于 1 个单词变量,但当选中的复选框有 2 个单词时,它会以某种方式拒绝......
我正在尝试在 Vscode 中运行 php 文件并且此错误不断出现?我应该做什么? PHP 警告:PHP 启动:无法加载动态库“mysqli”(已尝试:C:\xampp\php xt\mysqli(
首先,我得到 SQL 查询结果,并将其放入一个数组中,如下所示: $stmt= $conn->prepare("选择 p.*, f.* 来自水果 f 离开加入人 p ON f。
代码 创建表学生( id INT 主键自动递增, 名字 VARCHAR(100), 姓氏 VARCHAR(100), MajorID INT); 创建表专业( id 整数, 专业名称 VARCHAR(100)); 更改表专业 ...
我已经在 ubuntu 20.04 服务器中从源代码编译了 php8.3。 安装过程是 ./configure --prefix=/home/ubuntu/php8.3 --enable-zts --with-mysqli --disable-fileinfo --with-openssl --with-zli...
在一个简单的网站上,我有一些文章存储在我的数据库中,每个文章都有一个按钮,按下该按钮时,会将读者引导到具有匹配内容的另一个网站。 我有两节课:关于...
我想在 php 脚本执行时显示加载图像。我读过关于如何做到这一点的不同答案,但大多数人都说我应该有一个单独的 php 页面。但我就是我们...
我正在尝试通过 PHP 中的准备好的语句插入一些数据。我有以下代码,但没有为我插入。我也已经设置了以下代码 ini_set('显示错误', 1...
我想创建一个动态选择语句,可以选择我要求的任何表,与我的数据库中的表列相同。 这是到目前为止我选择的课程: 我想创建一个动态选择语句,可以选择我要求的任何表,与我的数据库中的表列相同。 这是我迄今为止选择的课程: <?php class select extends database{ // Instance variables private $id; public $table; public $column; public $sql; public $result = array(); // Methods - Behavior public function selectQuery($table){ global $con; $sql = $this->sql; $sql = "SELECT * FROM {$table}"; $result = $this->con->query($sql); while($row = $result->fetch_object()){ //iterate all columns from the selected table //and return it someway. } } } $selectQuery = new select(); 这是我的数据库类 require_once(LIB_PATH.DS."config.php"); class database { public $con; public $result = array(); public function __construct() { $this->con = new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB); if($this->con->connect_error){ die($this->con->connect_error); } } } $db = new database(); 到目前为止我所做的是使用 mysqli 连接到我的数据库,然后我从数据库类扩展我的选择类,这样我就可以获得连接,然后我想从中选择所有内容。 首先,你的 select 类正在扩展 database 类,所以没有必要在 public $result = array(); 类中重新声明 select,实际上甚至没有必要。 其次,由于您没有在类之外使用对象属性,因此请将它们设为 private。 最后,由于您要处理可变数量的参数,请使用 func_get_args() 函数。 参考资料如下: func_get_args() 根据您的要求,解决方案是将可变数量的参数发送到 selectQuery() 方法,并使用 func_get_args() 获取包含函数参数列表的数组。 第一个参数是表名称,其余参数是列名称(如果提供) 如果仅向函数传递一个参数,则 SELECT 查询将是 SELECT * FROM table_name 如果向函数传递多个参数,则 SELECT 查询将是 SELECT column1, column2, column3, ... FROM table_name 所以你的代码应该是这样的: require_once(LIB_PATH.DS."config.php"); class database { public $con; public function __construct() { $this->con = new mysqli(DB_HOST,DB_USERNAME,DB_PASSWORD,DB); if($this->con->connect_error){ die($this->con->connect_error); } } } class select extends database{ // Instance variables private $table; private $columns; private $sql; // Methods - Behavior public function selectQuery(){ // incrementally construct the query $this->sql = "SELECT "; // get the argments passed to the function $this->columns = func_get_args(); // the first argument would be the table name and rest of the arguments are column names (if provided) $this->table = $this->columns[0]; // if only one argument is passed to the function, // then SELECT query would be SELECT * FROM table_name if(count($this->columns) == 1){ $this->sql .= "* "; }else{ // if more than one argument is passed to the function, // then the SELECT query would be SELECT column1, column2, column3, ... FROM table_name for($i = 1; $i < count($this->columns); ++$i){ $this->sql .= $this->columns[$i] . ","; } // remove the last , from the $sql string $this->sql = rtrim($this->sql, ","); } $this->sql .= " FROM $this->table"; // execute the query $result = $this->con->query($this->sql); // return the result set return $result; } } $obj = new select(); $table = "YOUR_TABLE_NAME"; $column1 = "COLUMN_1"; $column2 = "COLUMN_2"; $result = $obj->selectQuery($table, $column1, $column2); while($row = $result->fetch_assoc()){ // display it echo $row[$column1] . " " . $row[$column2] . "<br />"; } $result = $obj->selectQuery($table); while($row = $result->fetch_assoc()){ // display it } 这个很简单 function conx(){ $link = new mysqli($db_host, $db_user, $db_pass, $db_name); if ($link->connect_error) { die("Connection failed: " . $link->connect_error); } $sql = "SET NAMES utf8"; $result = $link->query($sql); return $link; } 现在你有了一个连接,让我们传递一个 $table 值 $link = conx(); $sql = "SELECT * FROM $table"; <------ REMOVE {} from your table var!Worked for me $result = $link->query($sql); if(!$result) {echo 'Failed to query';}; if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo $row["title"]; } } else { echo "0 results"; } $link->close(); } 这是最基本的! 实际上 - 我认为你离得并不远;暂时忽略命名空间或任何特定的设计模式,存在一些范围缺陷,但是...... 让我们假设一个目录结构,其中包含类和应用程序文件(例如index.php)以将它们粘合在一起: /class/Database.php <?php class Database { protected $con; public function __construct() { $this->con = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB); //error trapping if($this->con->connect_error) { die($this->con->connect_error); } //ok set charset; should add error trapping here too else { $this->con->set_charset('UTF8'); //probably } } } /class/Select.php <?php class Select extends Database { // Class Members private $id; public $table; public $column; public $sql; public $result = array(); // Methods - Behavior public function __construct() { parent::__construct(); } public function selectQuery($table) { //since there's a $table class member... $this->table = $this->con->real_escape_string($table); //query string $sql = "SELECT * FROM {$this->table}"; //should be some error trapping here $response = $this->con->query($sql); //result while($row = $response->fetch_object()) { $this->result[] = $row; } //return return $this->result; } } index.php <?php //require is a language construct not a function // - it doesn't need parentheses require_once LIB_PATH.DS . 'config.php'; require_once '/path/to/class/Database.php'; require_once '/path/to/class/Select.php'; //build the object and run the query $s = new Select; // this should hold your resultset as an array of objects // though it would also be accessible via $s->result since // that's a public class member $r = $s->selectQuery('my_table'); 这一切都非常简单,不太实用(但你说这是为了考试,所以......)。 实际上,您可能不想为每个查询启动新的数据库连接,因此可能值得查看 static 类成员:http://php.net/manual/en/language.oop5.static .php ...或单例模式(尽管您可能需要也可能不需要单例数据库连接):http://www.phptherightway.com/pages/Design-Patterns.html ...也是封装,public类成员(通常)不是可取的:PHP中的简单示例封装是什么? db_connection.php class db{ private $db_host = ''; private $db_user = 'user'; private $db_pass = 'pass'; private $db_name = 'your database name'; protected $con; public function __construct(){ $this->con = new mysqli($this->db_host,$this->db_user,$this->db_pass,$this->db_name); if ($this->con -> connect_errno) { echo "Failed to connect to MySQL: " . $this->con -> connect_error; exit(); } return false; } } 查询.php require 'db_connection.php'; class query extends db{ public function select($tableName,$column = null,$clause = null){ $columns = null; if ($column == null) { $columns = '*'; }else{ $values = Array(); foreach($column as $key => $value){ array_push($values,"$value"); } $columns = join(',',$values); } $select = null; $select .= "SELECT ".$columns." FROM {$tableName} "; if ($clause != null) { $select .= $clause; } $s_sql = $this->con->prepare($select); $s_sql->execute(); // It will return mysqli_stmt Object return $s_sql; } } $s 将返回 mysqli_stmt 对象。 index.php $query_ob = new query(); // The first parameter is required And other parameters is optional. // The second parameter must be Array[]. $s = $query_ob->select(parameter1,parameter1,parameter3); $r = $s->get_result(); while ($f = $r->fetch_assoc()) { // code here } $t->close();
我试图将 MySQLi 查询错误转换为异常,但不能 - 仅当无法连接数据库时才会抛出 mysqli_sql_exception。 我使用 mysqli_report(MYSQLI_REPORT_STRICT) 和程序 My...