gpt4 book ai didi

php - 如果字符串长度大于设置的最大值,为什么数据会进入数据库

转载 作者:搜寻专家 更新时间:2023-10-30 20:24:16 25 4
gpt4 key购买 nike

我有一个登录系统,但我不知道如果字符串长度大于设置的 varchar 最大值,为什么数据会输入到数据库中。我在数据库中设置了 varchar(20),当我注册一个新帐户并输入超过 20 个字符的用户名字符串时,将插入前 20 个字符。

具体来说,accountOption.php 文件在根文档之外,连接有效

这是 Action 函数:

    function registerAccount($username,$password,$email){
global $db;

$sql = "INSERT INTO users (username,password,email) VALUES (:username,:password,:email)";
$stmt = $db->prepare($sql);
$stmt->execute(array(':username' => $username,':password'=>$password,':email'=>$email));
if ($stmt->rowCount() > 0){

$_SESSION['loggedIn'] = $username;
header("Location: ?page=loggedIn&message=Registered");

}else {
header("Location: ?page=register&message=Failed");
}



}

这是 form.php

        <?php 
if(isset($_GET['message'])){
echo $_GET['message']."<br>";
}
?>
Please register:
<form action="?bpage=accountOptions&action=register&nonUI" method="post">

Username: <input type="text" name="username"><br>
Password: <input type="password" name="password"><br>
Email: <input type="email" name="email"><br>
<br>
<input type="submit">
</form>

connection.php

<?php 

global $db;

$userdb="yyy";
$passworddb="xxx";


try {
$db=new PDO('mysql:host=localhost;dbname=dbname;',$userdb,$passworddb);

}catch(Exception $ex){

throw new Exception("Nu am reusit sa ne conectam la db");
}


?>

最佳答案

除非 strict SQL mode,否则 MySQL 将插入字符到列的最大长度。已启用。来自 the documentation :

If strict SQL mode is not enabled and you assign a value to a CHAR or VARCHAR column that exceeds the column's maximum length, the value is truncated to fit and a warning is generated. For truncation of nonspace characters, you can cause an error to occur (rather than a warning) and suppress insertion of the value by using strict SQL mode. See Section 5.1.8, “Server SQL Modes”.

如果您希望数据库强制执行此最大长度,则需要启用严格的 SQL 模式。否则(或同时),您将需要验证应用程序中的长度。

请记住,如果您确实启用了严格的 SQL 模式,将会有其他潜在的影响,因为它是……严格的。

关于php - 如果字符串长度大于设置的最大值,为什么数据会进入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45470124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com