php - 数据库名称的 Sql 限制
问题描述
我试图制作一个 sql 数据库,但我遇到了一些关于INSERT INTO TABLE的问题。我注意到如果数据库的名称是u759286173 ,sql不允许我在表中插入数据我可以使用任何其他名称将数据插入表中,但是这个特定的(u759286173)数据库名称不允许我在表中插入数据桌子
我尝试了各种有效的数据库名称
- 759286173
- 759286173_魁北克
- 759286173_grvnaz
- u_grvnaz
有人可以解释一下为什么当我允许数据库名称为u759286173时数据没有插入表中
我的数据库名称:u759286173 我的表名称:mydb
如果您遇到同样的问题或有解决方案,请回复。 任何帮助表示赞赏。
我的代码
<?php
$dbServername = "localhost";
$dbUsername = "root";
$dbPassword = "";
$dbName = "u759286173";
$dbHost = " localhost";
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
其他代码
<?php
session_start();
include 'dbh.inc.php';
if (isset($_POST) & !empty($_POST)) {
$first = $_POST['first'];
$last = $_POST['last'];
$email = $_POST['email'];
$message = $_POST['message'];
$sql = "INSERT INTO mydb (first, last, email, message)
VALUES ('$first', '$last', '$email', '$message');";
mysqli_query($conn, $sql);
header("location: ../signup.php?send=success");
} else {
header('location: ../failed.php');
exit();
}
?>
表格代码
<!DOCTYPE>
<html>
<body>
<form class="registerform" action="includes/contact.inc.php" method="POST">
<input type="text" placeholder="first" name="first" required/>
<input type="text" placeholder="last" name="last" required/>
<input type="email" placeholder="E-mail ID" name="email"/>
<input type="text" placeholder="message" name="message" required/>
<button name="submit" type="submit">Create</button>
</form>
</body>
</html>
=数据库u759286173
CREATE TABLE IF NOT EXISTS `mydb` (
`id` int(11) NOT NULL,
`first` varchar(32) NOT NULL,
`last` varchar(32) NOT NULL,
`email` varchar(50) NOT NULL,
`message` varchar(150) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
解决方案
该INSERT
语句不提供id
列的值。
该id
列被定义为NOT NULL
并且没有 AUTO_INCREMENT 属性。(并且我们假设没有一个BEFORE INSERT
触发器可以为NEW.id
给定表定义,我们期望当INSERT
语句执行时,MySQL 会发出
Error Code: 1364
Field 'id' doesn't have a default value
(这可能是一个Warning
而不是Error
一些设置sql_mode
。)
最重要的是我们检查 MySQL 错误情况;这将提供我们需要的信息,以确定问题所在。
在脚本顶部,启用 PHP 和 mysqli 错误报告:
ini_set('display_errors', 1);
ini_set('log_errors',1);
error_reporting(E_ALL);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
这将在发生 MySQL 错误时使用我们需要的信息。
推荐阅读
- sql - 如何迭代变量?我收到错误 PLS-00103
- bash - 如果条件不起作用,则 shell 脚本中的正则表达式
- javascript - 将数组数组转换为带有键的对象
- php - SQLSTATE[HY000] [2054] 服务器向客户端发送未知字符集。请向开发人员报告
- android - 在地图上方叠加
- nginx - 在 nginx 中更改基本身份验证的标头名称或为 JWT 更改 Aspnetcore
- c++ - 我们可以在没有'advance'功能的情况下增加迭代器多个位置吗?
- asynchronous - Kotlin 库的未来异步无法正常工作
- angular - 无法在 now-ui-dashboard-angular 模板中更改侧边栏的颜色
- android - React Native Android - 手机锁定时推送通知后弹出屏幕