mysqli 相关问题

mysqli PHP扩展(“MySQL改进”)是PHP数据库驱动程序,包含自PHP 5以来。它利用了MySQL 4.1.3和更新版本中引入的新功能。

如何修复 PHP 警告:PHP 启动:无法加载动态库?

我正在尝试在 Vscode 中运行 php 文件并且此错误不断出现?我应该做什么? PHP 警告:PHP 启动:无法加载动态库“mysqli”(已尝试:C:\xampp\php xt\mysqli(

回答 1 投票 0

合并PHP多维数组中每个实体的SQL查询结果

首先,我得到 SQL 查询结果,并将其放入一个数组中,如下所示: $stmt= $conn->prepare("选择 p.*, f.* 来自水果 f 离开加入人 p ON f。

回答 3 投票 0

创建此外键时我缺少什么?

代码 创建表学生( id INT 主键自动递增, 名字 VARCHAR(100), 姓氏 VARCHAR(100), MajorID INT); 创建表专业( id 整数, 专业名称 VARCHAR(100)); 更改表专业 ...

回答 1 投票 0

PHP 8.3 来自源代码,mysqli.so 未找到

我已经在 ubuntu 20.04 服务器中从源代码编译了 php8.3。 安装过程是 ./configure --prefix=/home/ubuntu/php8.3 --enable-zts --with-mysqli --disable-fileinfo --with-openssl --with-zli...

回答 1 投票 0

根据查询名称仅读取数据库的特定行

在一个简单的网站上,我有一些文章存储在我的数据库中,每个文章都有一个按钮,按下该按钮时,会将读者引导到具有匹配内容的另一个网站。 我有两节课:关于...

回答 1 投票 0

PHP 执行时显示加载图像

我想在 php 脚本执行时显示加载图像。我读过关于如何做到这一点的不同答案,但大多数人都说我应该有一个单独的 php 页面。但我就是我们...

回答 3 投票 0

SQL 查询不起作用,没有出现错误

我正在尝试通过 PHP 中的准备好的语句插入一些数据。我有以下代码,但没有为我插入。我也已经设置了以下代码 ini_set('显示错误', 1...

回答 1 投票 0

寻求帮助以动态选择语句

我想创建一个动态选择语句,可以选择我要求的任何表,与我的数据库中的表列相同。 这是到目前为止我选择的课程: 我想创建一个动态选择语句,可以选择我要求的任何表,与我的数据库中的表列相同。 这是我迄今为止选择的课程: <?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();

回答 4 投票 0

将查询错误转变为 MySQLi 中的异常[重复]

我试图将 MySQLi 查询错误转换为异常,但不能 - 仅当无法连接数据库时才会抛出 mysqli_sql_exception。 我使用 mysqli_report(MYSQLI_REPORT_STRICT) 和程序 My...

回答 3 投票 0

SQL 比较两个相同表的差异

我的网站包含超过 60,000 种产品,我每周都会从制造商处获得更新,我需要处理这些更新,以便更新我的网站。我有 php 代码来加载各种相关表。 我有两个

回答 1 投票 0

我可以强制 mysqli 函数返回错误代码而不是抛出异常吗?

我维护了一个网站,不久前用 PHP 编写。它的大多数功能依赖于返回错误,而不是捕获异常。像这样的东西: (注:完全可以接受的东西......

回答 3 投票 0

mysqli::query():无法获取 mysqli / mysqli 对象已关闭

警告:mysqli::query():无法在 C:\Program Files (x86)\EasyPHP-DevServer-13.1VC9\data\localweb\my 便携式文件中获取 mysqli

回答 0 投票 0

通过 PHP 提交注册表时出现 HTTP ERROR 405。有什么办法可以解决这个问题吗?

所以最近我一直在尝试为我的网站(使用 html、css 和 js)创建一个实际上有效的注册表单,每当我输入一些信息并点击提交时,我就会被重定向到...

回答 1 投票 0

Mysqli multi_query 不执行所有查询

我正在使用 Mysqli 和 multi_query 在数据库表中更新或插入多行。当我在本地 MAMP 服务器上使用它们时,它们工作正常,但当我将它们放到网上时,它们就会崩溃。在遥控器上

回答 2 投票 0

sql返回错误数据[php,mysql]

我在用户表中有金额字段。我想通过使用 FOR 循环来获取所有内容。但我返回错误的数据。所有的东西都清楚地显示在图片中。 我在 amount 表中有 users 字段。我想通过使用 FOR 循环来获取所有内容。但我返回错误的数据。所有东西都清楚地显示在图片中。 <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/walletbot/database.php"; $user_amount = $connection->query("SELECT `amount` FROM `users` WHERE `amount` BETWEEN 1000 AND 30000"); $user_amount = $user_amount->fetchAll(); for ($i=0; $i<count($user_amount) -1; $i++) { try { $user_amount = $user_amount[$i]['amount']; echo $user_amount; echo "<br>"; } catch (PDOException $e) { echo $e->getMessage(); } } $connection = null; 我尝试使用 for 循环获取数据。这是代码的结果。正如你所看到的,它只给我返还了 2500 和 5。 我该如何解决? 问题出在 $user_amount 变量上。您正在将 $user_amount 重新分配给当前金额值,这会更改您的初始值。 我还注意到您的循环条件有问题,并且不会迭代整个数组。根据给定的代码,您的循环由于 count($user_amount) - 1 而提前停止一次迭代。 这是更正后的版本 <?php require_once $_SERVER['DOCUMENT_ROOT'] . "/walletbot/database.php"; $query = $connection->query("SELECT `amount` FROM `users` WHERE `amount` BETWEEN 1000 AND 30000"); $user_amounts = $query->fetchAll(); for ($i = 0; $i < count($user_amounts); $i++) { try { $amount = $user_amounts[$i]['amount']; // Used a different variable here echo $amount; echo "<br>"; } catch (PDOException $e) { echo $e->getMessage(); } } $connection = null; ?>

回答 1 投票 0

PHP mysqli 允许的内存大小

您好! 我有一个在付费 VPS 上运行的网络应用程序。那里没问题。我正在将此应用程序移至我自己的专用服务器。 当前云服务器-CS-: Centos 6 x86_64; 2 GB 内存; 2 个虚拟CPU 虚拟专用

回答 2 投票 0

当我使用 PHP mysql<td> 在

我用PHP和mysql制作了考勤管理系统。数据已成功检索,但是当我想要合并周日或假日的行时,它将其他列移到其后一位。 我正在尝试...

回答 1 投票 0

为什么我无法对这个存在漏洞的脚本进行SQL注入? [重复]

您能告诉我为什么我的 SQL 注入不起作用以及如何修复它吗?我尝试遵循此处的示例,但很有价值'); DROP TABLE table;-- 或密码 1=1 不起作用。很抱歉

回答 1 投票 0

通过准备好的语句从数据库中获取行

我最初创建了以下查询来从数据库返回一些结果。 $result = mysqli_query($con, "选择 bookingId, locationName 来自预订 ...

回答 3 投票 0

通过 MySQL 根据订单项目 ID 更新 WooCommerce 订单状态

我尝试使用以下 SQL 查询根据订单项 ID 更新 WooCommerce 订单状态: 更新 wp_posts 设置 post_status = 'wc-completed' 来自 wp_posts 左加入 wp_postmeta ON wp_...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.