mysqli 相关问题

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

致命错误:未捕获 mysqli_sql_exception:未知数据库“test_db”。即使我以编程方式创建数据库,我仍然收到此错误

这是代码 这是代码 <?php $servername = "localhost"; $usrname = "root"; $pwd = ""; $db = "test_db"; // connect to the database $conn= mysqli_connect($servername, $usrname, $pwd,$db); if (!$conn){ die('connection failed' . mysqli_connect_error()); } // Create database $sql = "CREATE DATABASE IF NOT EXISTS test_db"; if (mysqli_query($conn, $sql)) { echo "Database created successfully<br>"; } else { echo "Error creating database: " . mysqli_error($conn); } ?> 我不确定发生了什么,因为我确信我在打字时没有犯错误。尽管我做了 CREATE DATABASE 语句,但它不断向我显示有一个未知的数据库。 我不知道是否还需要做其他事情,但从所有方面来看,代码应该可以工作。 它应该回显“数据库创建成功”或错误消息。 `<?php $servername = "localhost"; $usrname = "root"; $pwd = ""; //$db = "test_db"; // connect to the database $conn= mysqli_connect($servername, $usrname, $pwd); if (!$conn){ die('connection failed' . mysqli_connect_error()); } // Create database $sql = "CREATE DATABASE IF NOT EXISTS test_db"; if (mysqli_query($conn, $sql)) { echo "Database created successfully<br>"; } else { echo "Error creating database: " . mysqli_error($conn); } ?>` 您的代码很好,您只需从 mysqli_connect() 中删除 $db 即可。 因为您请求将“test_db”连接到该数据库,但该数据库尚不存在。 公共函数__construct(){ if (!isset($this->conn)) { $this->conn = new mysqli($this->主机, $this->用户名, $this->密码, $this->数据库); if ($this->conn->connect_error) { die('Cannot connect to the database server: ' . $this->conn->connect_error); } } } <?php // Connect to MySQL $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); if (!$link) { die('Could not connect: ' . mysql_error()); } // Make my_db the current database $db_selected = mysql_select_db('my_db', $link); if (!$db_selected) { // If we couldn't, then it either doesn't exist, or we can't see it. $sql = 'CREATE DATABASE my_db'; if (mysql_query($sql, $link)) { echo "Database my_db created successfully\n"; } else { echo 'Error creating database: ' . mysql_error() . "\n"; } } mysql_close($link); ?> 参考 如果数据库不存在,如何使用 PHP 创建数据库? $conn= mysqli_connect($servername, $usrname, $pwd,$db); 您正在尝试连接到最初不存在的数据库,因此您会收到致命错误。 尝试使用 try catch 块创建新数据库 try{ $conn= mysqli_connect($servername, $usrname, $pwd,$db); }cath(Exception $e){ //your code }

回答 4 投票 0

尝试使用准备好的语句进行更新时,错误截断了不正确的 DECIMAL 值

我正在尝试使用以下代码更新特定表: 在页面顶部有 如果(isset($_GET[“id”])){ $id=$_GET["id"];..... //更新联系人 - 1...

回答 1 投票 0

我看不懂这些SQL表数据

我正在尝试从 SQL 表中提取特定的 8 位数字值。我找到了一个自定义字段,但它的值如下: a:4:{i:9;s:1:"1";i:7;s:13:"您的笔记";i:8;a:1:i:0;s:1:"...

回答 1 投票 0

根据 mysql 的输入填充表格

我有一个输入,其中输入了一个代码,并用来自mysql optenida的信息填充了下表,问题是我希望每次输入一个代码时,都会添加表中的所有数据(

回答 1 投票 0

数据独立性和MySQL数据的使用问题。如何使用PHP解决?

任务:构建当前日历月的用户注册图表(日期列显示每天的注册数量)。问题是数据不可用

回答 1 投票 0

1 个查询选择同一表中不同类别的多行

我有一个 PHP 脚本,它使用 4 个单独的查询从一个 mysql 表中读取最后 25 行(总共 100 行)。 例子: SELECT * FROM 表 WHERE 日期时间 <= 'xxx' AND name = 'john...

回答 1 投票 0

PHP mysqli 获取与查询不匹配的行

我试图根据类型列的内容使用 php mysqli 获取一些行,但是结果与查询不匹配。 我当前的代码是这样的: $stmt = $conn->prepare("选择 * FROM

回答 1 投票 0

从table1中选择id为table2中记录的记录

我有两张桌子;教师表和班级表如下图: 表老师 id 名称 类 1 - 约翰 - 1,3,4 2 - 弗雷德 - 1,2 3 - 格蕾丝 - 4 4 - 杰克 - 2,3 表类 id 名称 类代码 1 -

回答 1 投票 0

我想检索表中不可用且 CTE 不起作用的日期

我有每个日期的产品市场和价格表,但表中缺少一些日期,我想要给定范围内的所有日期的日期,以及哪个日期不在表中,价格取...

回答 1 投票 0

Mysql 单个查询中的 Join、Group by 和求和

我有2张桌子: 表 tms_invoices id load_id 公司名称 金额 1 11 公司1 40 2 11 公司1 30 3 11 公司2 ...

回答 1 投票 0

php 登录方法未按预期工作

所以我使用下面的代码有我的登录页面,但是验证代码不能很好地工作,它要么让我使用任何密码进入,要么根本不让我进入 初始化.php: 所以我的登录页面使用下面的代码,但是验证代码不能很好地工作,它要么让我使用任何密码进入,要么根本不让我进入 init.php: <?php date_default_timezone_set('Asia/Riyadh'); $error = ['Username' => '', 'Email' => '', 'Password' => '']; $input = ['Username' => '', 'Email' => '', 'Password' => '']; session_start(); $config = require 'config.php'; $db = new mysqli(...$config['db']); $db->set_charset($config['db_charset']); ?> 注册.php: <?php require 'init.php'; if ($_SERVER['REQUEST_METHOD'] === 'POST') { // input validation $Username = $input['Username'] = trim(filter_input(INPUT_POST, 'Username')); if (mb_strlen($Username) < 3 || mb_strlen($Username) > 30) { $error['Username'] = 'Please enter your name, it must be from 3 to 30 charaters long.'; echo "<p class='Center'> <font color=White size='50pt'>Username should be at least 3 characters long!</font> </p>"; } $Email = $input['Email'] = trim(filter_input(INPUT_POST, 'Email')); if (!filter_var($Email, FILTER_VALIDATE_EMAIL)) { $error['Email'] = 'Please enter a valid email address.'; echo "<p class='Center'> <font color=White size='50pt'>Please enter a valid email address!</font> </p>"; } else { $result = $db->execute_query("SELECT 1 FROM users WHERE email = ?", [$Email]); if ($result->fetch_row()) { $error['Email'] = 'Email address already taken.'; echo "<p class='Center'> <font color=White size='50pt'>Email address already taken.Please Login!</font> </p>"; } } $Password = filter_input(INPUT_POST, 'Password'); if (strlen($Password) < 3 || strlen($Password) > 72) { $error['Password'] = 'Please enter password, it must be from 3 to 72 characters long.'; echo "<p class='Center'> <font color=White size='50pt'>Password should be at least 3 characters long!</font> </p>"; } // if no errors if (implode("", $error) === '') { // Password MUST be hashed using the dedicated function $Password = password_hash($input['Password'], PASSWORD_DEFAULT); $VIP= "NO"; $Admin = "NO"; $Creation_date = date('d-M-Y h:i:s A'); $Last_Login = date('d-M-Y h:i:s A'); $Login_Times=1; // a parameterized query MUST be used to avoid errors and injections $stmt = $db->prepare("INSERT INTO Users (Username, Email, Password, VIP, Admin, Creation_Date, Last_login, Login_Times) VALUES (?,?,?,?,?,?,?,?)"); $stmt->execute([ $Username, $Email, $Password, $VIP, $Admin, $Creation_date, $Last_Login, $Login_Times, ]); echo "<p class='Center'> <font color=White size='50pt'>Registeration successful</font> </p>"; $_SESSION['Email'] = $Email; header("Location: home.php"); die; } } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="refresh" content="4;URL=login.php"> <link rel="stylesheet" href="Styles/General.css"> <link rel="stylesheet" href="Styles/Background.css"> <link rel="icon" href ="favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <title>Register & Login</title> </head> <body class="Blue-Black"> <h1 class="Center">Please wait, you will be automatically redirected to the login & registeration page.</h1> </body> </html> Validation.php:(这是问题) <?php require 'init.php'; $Email = $input['Email'] = trim(filter_input(INPUT_POST, 'Email')); // i use one of the 3 below $Password = $input['Password']; //if i use this it lets me in with any password $Password = $_POST['Password']; // if i use this it doesn't let me in at all $Password = filter_input(INPUT_POST, 'Password'); // if i add this to 1/ if i don't it still doesn't let me in $result = $db->execute_query("SELECT Email FROM Users WHERE Email = ?", [$Email]); if ($result->fetch_row()) { $select = "SELECT Password FROM Users WHERE Email = ?;"; $result2 = $db ->execute_query($select, [$Email]) ; $Get_hash = $result2 ->fetch_assoc(); $hash = $Get_hash['Password']; if (password_verify($Password, $hash)) { $_SESSION['Email'] = $Email; $Date = date('d-M-Y h:i A'); $Update = "UPDATE Users SET Last_Login = ?, Login_Times = Login_Times + 1 WHERE Users.Email = ?"; $stmt = $db->execute_query($Update, [$Date, $Email]); header('location:home.php'); }else{ echo "<p class='Center'> <font color=White size='50pt'>Invalid Password. Try again!</font> </p>"; } }else{ echo "<p class='Center'> <font color=White size='50pt'>There is no account associated with this email address please sign up!</font> </p>"; } ?> <!DOCTYPE html> <html> <head> <meta http-equiv="refresh" content="4;URL=login.php"> <link rel="stylesheet" href="Styles/General.css"> <link rel="stylesheet" href="Styles/Background.css"> <link rel="icon" href ="favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <title>Register & Login</title> </head> <body class="Blue-Black"> <h1 class="Center">Please wait, you will be automatically redirected to the login & registeration page.</h1> </body> </html> 登录.php <!DOCTYPE html> <html> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="Styles/Bootstrap.css"> <link rel="stylesheet" href="Styles/Font-Awesome.css"> <link rel="stylesheet" href="Styles/General.css"> <link rel="stylesheet" href="Styles/Login.css"> <link rel="icon" href ="favicon.ico" type="image/x-icon" /> <link rel="shortcut icon" href="favicon.ico" type="image/x-icon" /> <title>Register & Login</title> </head> <body> <a class="btn btn-danger" href="index.html">Cancel</a> <div> <h1 class="px20">Please Login after you Register if you don't have an account.</h1> <div> <div class="form-box"> <div class="button-box"> <div id="btn"></div> <button type="button" class="toggle-btn" onclick="Login()"> Login </button> <button type="button" class="toggle-btn" onclick="Register()"> Register </button> </div> <form action="validation.php" method="POST" id="Login" class="input-group"> <input type="Email" name="Email" class="input-field" placeholder="Email" required> <input type="Password" name="Password" id="Password" class="input-field" placeholder="Password" required> <i class="far fa-eye" id="togglePassword"></i> <button type="submit" class="submit-btn">Login</button> </form> <form action="registeration.php" method="POST" id="Register" class="input-group"> <input type="Email" name="Email" class="input-field" placeholder="Email" required> <input type="text" name="Username" class="input-field" placeholder="Username" required> <input type="Password" name="Password" class="input-field" id="Password2" placeholder="Password" required> <i class="far fa-eye" id="togglePassword2"></i> <button type="submit" class="submit-btn">Register</button> </form> </div> </div> </div> <script src="Scripts/Login.js"></script> </body> </html> 出了点问题,但我不太明白(注意:我是 php 和 mysql 的新手,所以详细的解释将不胜感激,请不要评判我仍在学习,所以这个错误对于专业人士来说可能并不困难 您不是对用户的密码进行哈希处理,而是对 $input 中的空默认密码进行哈希处理(这个变量的用途是什么?)。改变 $Password = password_hash($input['Password'], PASSWORD_DEFAULT); 到 $Password = password_hash(Password, PASSWORD_DEFAULT);

回答 1 投票 0

mysql中使用min(date)后如何返回同一行的数据

选择 customer_id、min(order_date) 作为first_date、customer_pref_delivery_date 从交货 按 customer_id 分组 按客户 ID 排序; 这是输入表 Delivery: 送货ID 客户ID

回答 1 投票 0

execute_query 和prepare+execute 有什么区别?

使用execute_query()[1]或使用prepare()然后execute()[2]有什么区别,什么时候使用bind参数,为什么?就像示例 [2] 中一样,我们已经给出了变量 wi...

回答 2 投票 0

mysqli_connect 不适用于 MAMP

下面的代码可以在我的带有 MAMP 的旧 iMac 上运行。但是,它在我的新 iMac 上不起作用。我该如何解决?我需要对 php.ini 文件做些什么吗? 下面的代码可以在我的旧 iMac 上使用 MAMP 运行。但是,它在我的新 iMac 上不起作用。我该如何解决?我需要对 php.ini 文件执行某些操作吗? <?php $dbConnection = mysqli_connect("localhost", "xxxx", "xxxx", "gallery"); $query = "SELECT * FROM images"; $stmt = mysqli_prepare($dbConnection,$query); mysqli_stmt_execute($stmt); mysqli_stmt_bind_result($stmt, $id, $categories,$img_name); while (mysqli_stmt_fetch($stmt)) { echo $id."<br />"; } ?> 我花了一天的时间来解决这个问题,然后 (localhost) MAMP 主页上的以下内容引起了我的注意:如果您运行的是 PHP 版本 5.5.x 或更早版本,mysqli_connect() 应该可以正常工作,但是如果您如果您使用的是 PHP 5.6.x 或更高版本,请尝试 mysqli_init() 并查看是否适合您。这对我有用!它显示在“示例”标题下。祝你好运! 您应该在 PHP.ini 中启用 php_mysqli 扩展。默认情况下它是禁用的。 查找以下行:extension=php_mysqli 问题:绑定语句中缺少列名。

回答 3 投票 0

执行函数之间的区别

使用execute_query[1]和使用prepare thenexecute[2]有什么区别,什么时候使用bind参数,为什么?就像示例 [2] 中一样,我们已经在

回答 1 投票 0

php 中的登录次数计数器

我有一个数据库,我正在尝试使用 php 计算登录次数,这是我的代码: $GetLoginTimes = "从用户表中选择 Login_Times,其中 email = '$email'"; $GetLoginTimes2 =

回答 3 投票 0

SQL - 如何使其成为 JOIN ON 语句 [已关闭]

选择姓氏、名字、电话 来自客户、销售、SALE_ITEM、ITEM 其中 CUSTOMER.CustomerID = SALE.CustomerID AND SALE.SaleID = SALE_ITEM.SaleID AND SALE_ITEM.ItemID = ITEM.Ite...

回答 1 投票 0

如何按最短字符串或从第一个字符开始最相关的方式按sql顺序选择字符串

我的 php 中有一个查询,如下所示: $查询= 选择 ydzdn_terms.term_id,ydzdn_terms.name 来自 ydzdn_terms 内连接 ydzdn_term_taxonomy on (ydzdn_terms.term_id=ydzdn_term_taxon...

回答 1 投票 0

解析错误:语法错误,意外的字符串内容“”,需要“-”或标识符或变量或数字

我的代码中的错误在哪里,请帮助我,当我更改我的托管时出现此错误。在旧主机上,我的代码工作正常,但在新主机上,出现此错误,我无法使用我的

回答 1 投票 0

为什么 PHP 在 mysqli_connect 失败时不显示我的自定义错误消息?

我正在尝试连接到数据库,当我尝试一切正确时,数据库会连接,一切都很好。但是,当我尝试使用一些错误的凭据进行连接时,它会抛出...

回答 1 投票 0

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