gpt4 book ai didi

php - 如何从 CodeIgniter 在 mysql 中插入包含连字符/破折号的电子邮件?

转载 作者:行者123 更新时间:2023-11-29 22:10:48 25 4
gpt4 key购买 nike

我在将带有连字符/破折号的电子邮件插入 mysql 时遇到问题。使用的框架是CodeIgniter。该项目托管在 GoDaddy 中(如果这有帮助的话)。有效的电子邮件有:

name@domain.com, name@test.domain.com, first.last@domain.com,first.last@test.domain.com, name.123@domain.com, first_last@domain.com, first_last@test.domain.com

电子邮件不起作用,但它们在 localhost 中工作正常:

first-last@domain.com, first-last@test.domain.com

这是插入电子邮件的表单:

<form method="post" action="<?php echo base_url('index.php?/codes');?>">
<div class="form-group">
<label>Email</label>
<input type="text" name="email" id="email" placeholder="Email" class="form-control">
</div>
<div class="form-group">
<label>Waiver Code</label>
<input type="text" name="code" id="code" placeholder="Code" class="form-control">
</div>
<button class="btn btn-sm btn-success" onclick="autogen()" name="saveCode">Generate</button>
</form>

从“javascript”调用的autogen()函数:

function autogen() {
var randomstring = Math.random().toString(36).slice(-6);
var date = new Date().getFullYear();
randomstring = date+randomstring;
randomstring = randomstring.toUpperCase();

var email = $('#email').val();
var code = $('#code');

if (!email) {
alert("Email is required!");
$('#email').focus();
} else {
code.val(randomstring);
alert("Email: "+email+"\nCode: "+randomstring);

$.ajax({
url: "<?php echo base_url('index.php?/genCode/"+email+"/"+randomstring+"');?>",
data: ({'email': email, 'code': randomstring}),
type: "post",
success: function(response, textStatus, jqXHR){
location.reload();
alert('Code added');
},
error: function(jqXHR, textStatus, errorThrown){
console.log("The following error occured: "+
textStatus, errorThrown);
}
});
}
}

最后是来自 CodeIgniter 的插入脚本

class GenCode extends CI_Controller {

public function index($email="", $code="")
{
//$data = array('email' => $this->db->escape($email), 'code' => $code, 'user' => $this->session->userdata('username'));
//$query = $this->db->insert('codes', $data);
$query = $this->db->query("insert ignore into codes(email, code, user) values('".$this->db->escape($email)."', '".$code."', '".$this->session->userdata('username')."');");
if ($query == TRUE)
return TRUE;
else
return FALSE;
}
}

我尝试过但没有运气的事情:

$this->db->escape($email)

mysql_real_escape_string($email)

我不知道我错在哪里。还是与 GoDaddy 有关?

最佳答案

我假设您正在使用 PDO。所以这个例子是针对 PDO 的:

$stmt=$this->db->prepare("insert ignore into codes(email, code, user) ".
" values(:email, :code, :user)");
$stmt->bindParam(":email",$email);
$stmt->bindParam(":code",$code);
$stmt->bindParam(":user",$user);

$stmt->execute();

参见http://php.net/manual/en/pdo.prepared-statements.php了解更多详情。

关于php - 如何从 CodeIgniter 在 mysql 中插入包含连字符/破折号的电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31705008/

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