我有一张桌子:
For_Sconti | Cat_Sconti | Sconto
7148 A1 451.00
如何阻止用户在何时插入错误(不在表中)For_Sconti值 试图更新Sconto字段?
简而言之,通过C接口,我想更新上面提到的表格。
do {
printf("Insert For_Sconti: \n");
scanf("%s", For_Sconti);
}
while (strlen(For_Sconti)>5);
在这里,我想在用户插入不在表格中的For_Sconti值时警告用户。
我想到了这个:
strcat(query, "SELECT For_Sconti,Cat_Sconti FROM Sconti;");
result = mysql_store_result (conn);
mysql_field_seek (result, 0);
row = mysql_fetch_row (result);
但我相信,这只是胡说八道。
有人可以帮助我吗?
答案 0 :(得分:0)
尝试使用mysql_affected_rows()功能。如果结果为0,则用户尝试修改不存在的For_Sconti。
答案 1 :(得分:0)
以下是您必须遵循的步骤: 1.-获取For_Sconti值。 2.-写一个像这样的查询: sprintf(outString“SELECT%s FROM myTable”,readValue);
3.-然后检查结果以查看它是否包含某些内容(如果它包含某些内容)然后允许用户插入新值,否则警告用户该错误。
答案 2 :(得分:0)
主键可防止重复;外键限制允许值的范围。
假设您有一个外键约束,您可能只想尝试插入用户提供的数据,并捕获您的C接口库在违反外键约束时返回的错误。此方法只需要一次往返数据库。
如果您想知道数据库中是否存在用户提供的值,请执行类似这样的查询,并检查其返回值。
SELECT (COUNT(*) > 0) as For_sconti_exists
FROM Sconti
WHERE For_sconti = <the user-supplied value>
此方法需要两次往返有效值 - 一次用于确定值是否存在,另一次用于插入行。你还必须