PHP中的MySQL插入错误
我的实际插入线有问题。现在它只是在表中插入一个空行。我是否错误地输入了$email行(以“$sql=…”开头的行)PHP中的MySQL插入错误,php,mysql,Php,Mysql,我的实际插入线有问题。现在它只是在表中插入一个空行。我是否错误地输入了$email行(以“$sql=…”开头的行) 功能验证(表单id、电子邮件){ 变量reg=/^([A-Za-z0-9\-\.])+\@([A-Za-z0-9\-\.])+\.([A-Za-z]{2,4})$/; var address=document.forms[form_id]。元素[email]。值; 如果(注册测试(地址)=错误){ 警报(“无效电子邮件地址”); 返回false; } 在连接到数据库之前,不能调用
功能验证(表单id、电子邮件){
变量reg=/^([A-Za-z0-9\-\.])+\@([A-Za-z0-9\-\.])+\.([A-Za-z]{2,4})$/;
var address=document.forms[form_id]。元素[email]。值;
如果(注册测试(地址)=错误){
警报(“无效电子邮件地址”);
返回false;
}
在连接到数据库之前,不能调用mysql\u real\u escape\u string(),否则只会收到警告并返回布尔值FALSE
将代码的顺序更改为:
mysql_connect(blah) or die(mysql_error());
mysql_select_db(blah) or die(mysql_error());
$email = mysql_real_escape_string($_POST['email']);
之所以这样做,是因为m_r_e_s()调用需要检索版本/状态信息,特别是哪些字符需要转义,而这在没有活动的DB连接的情况下是无法完成的。您不能调用mysql\u real\u escape\u string()除非连接到数据库,否则只会收到警告并返回布尔值FALSE
将代码的顺序更改为:
mysql_connect(blah) or die(mysql_error());
mysql_select_db(blah) or die(mysql_error());
$email = mysql_real_escape_string($_POST['email']);
之所以这样做,是因为m_r_e_s()调用需要检索版本/状态信息,特别是哪些字符需要转义,而这在没有活动的数据库连接的情况下是无法完成的。这应该可以在mysql连接之后,您必须调用mysql\u real\u escape\u string
if (isset($_POST['email']))
{
$email = $_POST['email'];
mysql_connect(blah) or die(mysql_error());
mysql_select_db(blah) or die(mysql_error());
$sql = sprintf("INSERT INTO email
(email
) VALUES ('%s')", mysql_real_escape_string($email));
mysql_query($sql);
}
尝试设置error\u reporting(E\u ALL);
您将看到一个错误。您必须在mysql连接后调用mysql\u real\u escape\u string
尝试设置error\u reporting(E\u ALL);
您将看到一个错误。是不是$u POST['email']为空?也请阅读官方文档:“如果没有找到这样的链接,它将尝试创建一个链接,就像调用mysql\u connect()时没有参数一样。如果没有找到或建立连接,则会生成一个E\u警告级别的错误。”如果在email
表中没有名为email
的列,则每次该行都将为空。您试图在不存在的列中插入一个值。此外,建议使用更好的命名约定(对于表,可能是email\u地址
,对于列,可能是email
)@andre:在这种情况下,根本不会执行insert-有一个,但显示为空。因此,您有一个名为“email”的表,其中有一列也叫“email”?请尝试在insert查询的正上方添加一个“echo$email;”语句,以查看$email变量是否正确填充。是$u POST['email']空?也可以从官方文档中读到:“如果没有找到这样的链接,它将尝试创建一个链接,就像调用mysql_connect()时没有参数一样。如果没有找到或建立连接,将生成一个E_警告级别的错误。”如果在email
表中没有名为email
的列,则每次该行都将为空。您试图在不存在的列中插入一个值。此外,建议使用更好的命名约定(对于表,可能是email\u地址
,对于列,可能是email
)@andre:在这种情况下,根本不会执行insert-有一个,但结果是空的。因此,您有一个名为“email”的表,其中有一列也叫“email”?请尝试在insert查询的正上方添加一个“echo$email;”语句,以查看$email变量是否正确填充。