检查(mysql)表中是否存在记录的正确方法

时间:2017-07-02 08:33:44

标签: mysql c

简单验证表中是否存在记录 这会是最理想的正确方法吗?

(如果我还要返回1或0的整数)

char *qu;
qu = malloc(300);

sprintf(qu, "select 1 from account where un='%s' and pw='%s' limit 1",u,p);
mysql_query(co, qu);

res =  mysql_use_result(co);
row = mysql_fetch_row(res);

if(row){
return "exists";
}else{
return "no";
}

我还尝试了行[0] ,这会在找不到记录时导致问题。 (或者甚至在找到时)..

2 个答案:

答案 0 :(得分:1)

这样做的规范方法是:

SELECT EXISTS(SELECT * FROM account WHERE un=? and pw=?)

请注意,我使用了绑定变量。您应该始终使用它们来查询SQL注入的查询安全性,而不是使用sprintf

参考文献:

13.2.10.6 Subqueries with EXISTS or NOT EXISTS

27.8.9 C API Prepared Statement Data Structures

答案 1 :(得分:1)

你试过这样的事吗:

while( row = mysql_fetch_row( res ) ) return atoi( row[ 0 ]); 
return 0; // or "no"