使用mysql_query()函数的mysql查询错误

时间:2019-02-04 13:57:06

标签: php mysql sql

if (!empty($name) || !empty($degree) || !empty($college)|| !empty($gender) || !empty($mail) || !empty($phone) || !empty($city)) 
{
    mysql_query($con,
        "INSERT INTO regstration(name,degree,college,gender,mail,phone,city)
        VALUES('$name','$degree','$college','$gender','$mail','$phone','$city')"
    ) or die("error");  
}

错误消息是:

  

mysql_query()在给定资源C:// ......第21行的情况下,期望参数1为字符串

2 个答案:

答案 0 :(得分:5)

查询的第一个问题是您在调用mysql_query时反转了查询字符串和连接对象。

此外,您评论了手机号码及其整数格式,其他资源为varchar 。然后,您应该调整插入查询以不引用整数值:

$sql= 
    "INSERT INTO regstration(name,degree,college,gender,mail,phone,city) 
     VALUES('$name','$degree','$college','$gender','$mail',$phone,'$city')";
mysql_query($sql, $con) or die("error : " . mysql_error());

重要说明:

  • 当发生mysql错误时,您可以使用mysql_error()访问错误消息(请参见上面的代码);重要的是要有完整的错误消息以分析错误,而不是一般的error提及。

  • SO上的任何人都强烈建议use prepared statements and parameterized queries,以保护您的代码免遭SQL注入,并使您的查询更具可读性和可维护性。使用参数化查询时,这种错别字要容易得多。

  • mysql extension is deprecated :您应考虑迁移到mysqliPDO

答案 1 :(得分:1)

请注意,mysql_query的第一个参数是查询,而不是$con

可以将$con作为第二个参数:

$query = "INSERT INTO regstration(name,degree,college,gender,mail,phone,city) VALUES('$name','$degree','$college','$gender','$mail','$phone','$city')";
mysql_query($query, $con) or die("error");

还要注意:

  

此扩展在PHP 5.5.0中已弃用