首页 > 解决方案 > 数据库名称的 Sql 限制

问题描述

我试图制作一个 sql 数据库,但我遇到了一些关于INSERT INTO TABLE的问题。我注意到如果数据库的名称是u759286173 ,sql不允许我在表中插入数据我可以使用任何其他名称将数据插入表中,但是这个特定的(u759286173)数据库名称不允许我在表中插入数据桌子

我尝试了各种有效的数据库名称

  1. 759286173
  2. 759286173_魁北克
  3. 759286173_grvnaz
  4. 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;

标签: phpmysqlsql

解决方案


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 错误时使用我们需要的信息。


推荐阅读