Php 当一个条目包含一个“"@&引用;

Php 当一个条目包含一个“"@&引用;,php,database,email,phpmyadmin,varchar,Php,Database,Email,Phpmyadmin,Varchar,我正在尝试将电子邮件地址存储到数据库中。该列设置为varchar,长度为200,utf8 unicode ci。每当我尝试插入包含“@”的数据时,都不会发生任何事情。它不会返回错误,并且不会提交其他内容。好像什么都没发生。当我只使用字母和数字时,它确实起作用。有什么我遗漏的吗?我以前储存过电子邮件地址,但我不记得做过什么特别的事情 多谢各位 用于插入数据的代码 $username = $_POST["user"]; $password = $_POST["pass"]; $email = $_

我正在尝试将电子邮件地址存储到数据库中。该列设置为varchar,长度为200,utf8 unicode ci。每当我尝试插入包含“@”的数据时,都不会发生任何事情。它不会返回错误,并且不会提交其他内容。好像什么都没发生。当我只使用字母和数字时,它确实起作用。有什么我遗漏的吗?我以前储存过电子邮件地址,但我不记得做过什么特别的事情

多谢各位

用于插入数据的代码

$username = $_POST["user"];
$password = $_POST["pass"];
$email = $_POST["email"]; 
$friendCode = $_POST["friendCode"];
$rating = 0;

try{
    $dbh = new PDO('mysql:host=localhost;dbname=5iv', "kmessner", "##########6");
    $dbh->query('INSERT INTO users (username,password,email,friendcode,rating) VALUE ('.$username.','.$password.','.$email.','.$friendCode.','.$rating.')');

$dbh = null;
}
catch (PDOException $e){
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
$username=$\u POST[“user”];
$password=$_POST[“pass”];
$email=$_POST[“email”];
$friendCode=$_POST[“friendCode”];
$rating=0;
试一试{
$dbh=new-PDO('mysql:host=localhost;dbname=5iv','kmessner','6');
$dbh->query('INSERT INTO users(用户名、密码、电子邮件、friendcode、评级)值('.$username.'、'.$password.'、'.$email.'、'.$friendcode.'、'.$rating.'));
$dbh=null;
}
捕获(PDO$e){
打印“错误!:”$e->getMessage()。“
”; 模具(); }
提供的代码对我来说根本不起作用-@或不起作用,并且一直在默默地失败。回显查询并将其放入PhpMyAdmin会抛出一个错误(结果显示查询格式不正确,插入的数据根本没有引用)

我已经在运行PHP5.4的MAMP安装上尝试过这一点

更改此选项:

$dbh->query("INSERT INTO users (username,password,email,friendcode,rating) 
VALUE ('.$username.','.$password.','.$email.','.$friendCode.','.$rating.'));
对此(请注意双引号,删除“.”有效:

$dbh->query("INSERT INTO users (username,password,email,friendcode,rating) 
VALUES ('$username','$password','$email','$friendCode','$rating')");
更好的做法是,不要将原始post数据连接到查询中,而是尝试以下方法:

$stmt = $dbh->prepare("INSERT INTO users (username,password,email,friendcode,rating) 
VALUES (?,?,?,?,?)");
$stmt->execute(array($username, $password, $email, $friendCode, $rating));
还有一件事-您的列(如屏幕截图所示)是ascii\u general\u ci,而不是utf8


希望这能有所帮助。

没有sql,没有代码,没有数据库详细信息(虽然phpmyadmin意味着mysql),…没有帮助。就像有人曾经说的“不痒,不搞笑”。这是一个“猜猜赢”@MarcB(我想知道今天的奖品是什么)Kyle,可能有很多问题。请仔细检查您的列设置为什么。另一个问题可能是您的查询有误。向我们展示您的代码、表结构以及任何您能想到的可以帮助我们“帮助您”的东西。我们不知道您有什么;您在那里,我们没有;-)您所有的DB列都是大写的,您使用的是小写值
用户名、密码、电子邮件、friendcode、评级
可能就是它。把你所有的值都用大写,或者把你的DB列改成小写。我把它们改成ascii_general_ci是为了让它工作。你是我的救世主和上帝。我真的需要更多地阅读PHP。非常感谢。没问题!很高兴这有帮助:)在我提供的两个查询中,使用第二个,将数据绑定为参数将有助于提高系统的安全性(了解SQL注入攻击)。