mysqli PHP扩展(“MySQL改进”)是PHP数据库驱动程序,包含自PHP 5以来。它利用了MySQL 4.1.3和更新版本中引入的新功能。
连接到 MySQL 时,PHP 返回致命错误而不是错误号[重复]
我当前的计算机安装了 XAMPP,并且我已经成功地使用它来测试 PHP 程序好几年了。 我最近买了一台新电脑,并在上面安装了最新版本的 XAMPP,如
我想使用没有第一个参数的mysqli_query。是否可以?如果是,那么我的代码应该是什么,没有数据库链接 我想使用没有第一个参数的mysqli_query。是否可以?如果是,那么没有数据库链接的代码应该是什么 <?php $cnn = mysqli_connect("localhost","root",""); $db = mysqli_select_db($cnn, "thedb"); mysqli_query($cnn, "SET NAMES 'utf8'"); mysqli_query($cnn, 'SET CHARACTER SET utf8'); ?> 你必须有连接才能执行查询,否则它会在哪里执行? 为了更好地理解这一点,请查看:http://php.net/manual/en/mysqli.query.php 我用这段代码解决了我的问题 public $_link; function connectHost($host, $user, $password) { $this->_link = mysqli_connect($host, $user, $password); if(!$this->_link) { die("Could not connect to host :("); return false; } return true; } public function connectDatabase($database) { $db = mysqli_select_db($this->_link, $database); if(!$db) { die("Could not connect to database :("); return false; } else { mysqli_query($this->_link, "SET NAMES 'utf8'"); mysqli_query($this->_link, 'SET CHARACTER SET utf8'); return true; } } function execQuery($query) { $result = mysqli_query($this->_link, $query); if(!$result) { //die("Could not execute the query :("); return false; } else { return $result; } }
如何针对 mysqli 准备好的语句编写 PHP 单元测试?
我想针对类函数编写一个 PHP 单元测试。 功能: 函数 ValidateToken(字符串 $key, 字符串 $token): 数组 { if (!empty($key) || !empty($token)) { ...
SQL 查询检索以下条件。有两列,一列以 user_id 作为主键,另一列作为经理键。我想检索查询以便它显示管理器...
为什么我第二次尝试时没有显示第一行?在屏幕截图中,第一次回显时第一行突出显示。 [![在此处输入图像描述][1]][1]/*================...
使用 IN () 子句的准备语句对我来说很棘手。我有一个 Ajax 调用声明,$_POST 是一个值数组。 我有一个由三个值“1、2、3”组成的字符串,我将其分解为......
我有这样的代码来连接我的服务器数据库: 我有这样的代码来连接我的服务器数据库: <?php $con = mysqli_connect("", "username", "password", "databasename"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } 但是却显示“无法连接MySQL”,这段代码有什么问题吗?我第一次在网络服务器中尝试它,而我的本地主机工作得很好。 服务器名称不能为空。如果 MySQL 安装在本地,请使用 localhost <?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "test"; // Create connection $con = mysqli_connect($servername, $username, $password, $dbname); 要使用 mysqli 连接到 MySQL 数据库,您需要执行 3 行代码。您需要启用错误报告、创建 mysqli 类的实例并设置正确的字符集。 <?php mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $mysqli = new mysqli('localhost', 'username', 'password', 'dbname', 3307); $mysqli->set_charset('utf8mb4'); // always set the charset mysqli 构造函数中的参数都是可选的,但大多数时候您希望传递至少 4 个。按照正确的顺序,它们是: MySQL 主机。 大多数情况下是 localhost,但如果您连接到远程主机,它将是其他 IP 地址。确保它不包含 http 协议部分。它应该是 IP 地址或不带协议的 URL。 用户名。这是您的 MySQL 用户的用户名。要连接到 MySQL 服务器,您需要拥有具有正确权限的有效用户。 密码。 数据库名称。这是您要连接的MySQL数据库名称。 端口。 大多数情况下,默认端口是正确的,但如果您将 wampserver 与 MariaDB 一起使用,您可能需要将其更改为 3307。 套接字名称。指定应使用的套接字或命名管道。 不幸的是,字符集不是这些参数之一,因此您必须使用专用函数来设置这个非常重要的参数。 请注意切勿手动显示连接错误。这样做完全没有必要,而且会泄露您的凭据。 不相关的说明:我不建议在新项目中使用 MySQLi。请考虑使用 PDO,总的来说,这是一个更好的连接 MySQL 的 API。 为什么使用mysqli?只需使用 PDO 即可获得更安全的 mysql 连接,只需使用: $hostname='localhost'; $username='root'; $password=''; $dbh = new PDO("mysql:host=$hostname;dbname=dbname",$username,$password); 您应该指定 主机名 $con = mysqli_connect("localhost","username" ,"password","databasename"); 如果它返回类似的错误 无法连接到MySQL:无法通过套接字'/var/lib/mysql/mysql.sock'连接到本地MySQL服务器 将 localhost 替换为 127.0.0.1。 如果仍然无法连接,请检查 mysql 服务器是否正在运行。 service mysqld start 然后,尝试以下操作之一: (如果你还没有设置mysql密码) mysql -u root 如果您已设置密码 mysql -u root -p $localhost = "localhost"; $root = "root"; $password = ""; $con = mysql_connect($localhost,$root,$password) or die('Could not connect to database'); mysql_select_db("db_name",$con); 更好的方法是将连接和登录参数分开。 <?php class Database{ protected $url; protected $user; protected $passw; protected $db; protected $connection = null; public function __construct($url,$user,$passw,$db){ $this->url = $url; $this->user = $user; $this->passw = $passw; $this->db = $db; } public function __destruct() { if ($this->connection != null) { $this->closeConnection(); } } protected function makeConnection(){ //Make a connection $this->connection = new mysqli($this->url,$this->user,$this->passw,$this->db); if ($this->connection->connect_error) { echo "FAIL:" . $this->connection->connect_error; } } protected function closeConnection() { //Close the DB connection if ($this->connection != null) { $this->connection->close(); $this->connection = null; } } protected function cleanParameters($p) { //prevent SQL injection $result = $this->connection->real_escape_string($p); return $result; } public function executeQuery($q, $params = null){ $this->makeConnection(); if ($params != null) { $queryParts = preg_split("/\?/", $q); if (count($queryParts) != count($params) + 1) { return false; } $finalQuery = $queryParts[0]; for ($i = 0; $i < count($params); $i++) { $finalQuery = $finalQuery . $this->cleanParameters($params[$i]) . $queryParts[$i + 1]; } $q = $finalQuery; } $results = $this->connection->query($q); return $results; } }?> 与数据库工厂结合使用可以保持数据分离和干净。 <?php include_once 'database/Database.php'; class DatabaseFactory { private static $connection; public static function getDatabase(){ if (self::$connection == null) { $url = "URL"; $user = "LOGIN"; $passw = "PASSW"; $db = "DB NAME"; self::$connection = new Database($url, $user, $passw, $db); } return self::$connection; } } ?> 之后,您可以轻松地创建您的(基于类的)CRUD 类(对象名+DB) <?php include_once "//CLASS"; include_once "//DatabaseFactory"; class CLASSDB { private static function getConnection(){ return DatabaseFactory::getDatabase(); } public static function getById($Id){ $results = self::getConnection()->executeQuery("SELECT * from DB WHERE Id = '?'", array(Id)); if ($results){ $row = $results->fetch_array(); $obj = self::convertRowToObject($row); return $obj; } else { return false; } } public static function getAll(){ $query = 'SELECT * from DB'; $results = self::getConnection()->executeQuery($query); $resultsArray = array(); for ($i = 0; $i < $results->num_rows; $i++){ $row = $results->fetch_array(); $obj = self::convertRowToObject($row); $resultsArray[$i] = $obj; } return $resultsArray; } public static function getName($Id){ $results = self::getConnection()->executeQuery("SELECT column from DB WHERE Id = '?'", array($Id)); $row = $results->fetch_array(); return $row['column']; } public static function convertRowToObject($row){ return new CLASSNAME( $row['prop'], $row['prop'], $row['prop'], $row['prop'] ); } public static function insert ($obj){ self::getConnection()->executeQuery("INSERT INTO DB VALUES (null, '?', '?', '?')", array($obj->prop, $obj->prop, $obj->prop)); } public static function update ($propToUpdate, $Id){ self::getConnection()->executeQuery("UPDATE User SET COLTOUPDATE = ? WHERE Id = ?", array($propToUpdate, $Id)); } } 通过这种精细的编码,在前端选择项目是小菜一碟: include 'CLASSDB'; <php $results = CLASSDB::getFunction(); foreach ($results as $class) { ?> <li><?php echo $class->prop ?><li> <php } ?> <?php $servername=""; $username=""; $password=""; $db=""; $conn=mysqli_connect($servername,$username,$password,$db); //mysql_select_db($db); if (!$conn) { echo "Error: Unable to connect to MySQL." . PHP_EOL; echo "Debugging errno: " . mysqli_connect_errno($conn) . PHP_EOL; echo "Debugging error: " . mysqli_connect_error($conn) . PHP_EOL; exit; } @session_start(); $event_name = $_POST['first_name']; $first_name = $_POST['last_name']; $sql = "INSERT INTO customer(first_name, last_name,) VALUES ('$first_name', '$last_name')"; $conn->query($sql); $lastInsertId = mysqli_insert_id($conn); ?> 像这样的本地主机(MySQLi 程序) <?php $servername ="localhost"; $username="username";//username like (root) $password="password";//your database no password. (" ") $database="database"; $con=mysqli_connect($servername,$username,$password,$database); if (!$con) { die("Connection failed: " . MySQL_connect_error()); } else{ echo "Connected successfully"; } 使用 php 连接 MySQL 服务器的最简单方法。 $conn=new mysqli("localhost", "Username", "Password", "DbName"); if($conn->connect_error) { die("connection faild:".$conn->connect_error); } echo "Connection Successfully..!";
我有一个sql,如下所示。 从付款中选择 * 已删除位置 = 0 并且 is_privacy = 0 AND ou_code IN ('A1', 'A2', ..., 'W1', 'W2'...) 限制 0, 20 in之后还有很多元素,abo...
执行时 mysqli_bind_result(); 我收到一条错误消息“调用未定义的函数”。 我的代码如下所示: $mysqli = new mysqli("localhost", "root", &...
致命错误:调用未定义的函数 mysqli_init() [重复]
我有一个非常奇怪的错误。我的 httpd 服务器一直工作正常,直到上周三我卸载了 MS SQL 和 Visual Studio C#。当我重新启动电脑时,我发现某些部分...
我使用 mysqli_ping() 来检查 mysqli 连接是否已启动。在最新的 PHP 8.4 版本中,该函数已被弃用,并将在将来删除。为什么这个函数被弃用了,w...
我有以下PHP代码。 我希望返回插入的最后一个 id: $sql = $this->dbLink->prepare(" 插入 VesselTransits(由用户 ID 创建、终端 ID、
我正在尝试学习授予用户数据库权限的最佳方法 如果“silas”@localhost' 不存在,则创建由“1234”标识的用户 授予 上的所有权限。 TO 'silas'@'localhost'; 或者 格...
是否可以在准备好的 mysqli 语句中多次使用一个参数,而只绑定一次? 像这样的东西 $stmt = $mysqli->prepare(SELECT * FROM 用户 WHERE 年龄BETWEE...
如何使用 MySQLi 准备好的语句在一次数据库中插入多行[重复]
我使用了一个非常简单的插入语句 插入表 (col1, col2, col3) 值 (1,2,3), (4,5,6), (7,8,9), ... 目前,保存要插入的值的查询部分是一个单独的
我知道有多个线程存在此问题,但它们总是有不同的原因,而且没有一个线程似乎与我的相同。 我正在尝试从数据库、连接中访问值...
我正在使用 WordPress 和 XAMPP。我正在尝试使用 mysqli_fetch_row() 函数从名为 ltport_posts 的表中的名为 post_title 的列中获取帖子标题。与数据的联系...
我想使用将记录插入数据库 我有3个文件 config.php(用于数据库连接) function.php(用于创建CRUD函数) emp.php(听说我从 funct 调用了函数...
如何从 mysqli 获取单个列值?结果应该是单行只有一列。 这是我尝试过的: $query = "从 `user` 中选择 MAX(`userid`)"; $rlt = mysqli_query(...
我想将所有旧样式查询修改为准备好的语句,并摆脱对 mysqli 转义等的关心。 经过分析,我决定坚持使用 mysqli 准备好的语句......