Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果表中没有错误的值,则警告用户(Mysql+C)_Mysql_C - Fatal编程技术网

如果表中没有错误的值,则警告用户(Mysql+C)

如果表中没有错误的值,则警告用户(Mysql+C),mysql,c,Mysql,C,我有一张桌子: For_Sconti | Cat_Sconti | Sconto 7148 A1 451.00 如何防止用户在以下情况下为\u Sconti值在表中插入错误的not 正在尝试更新Sconto字段吗 简而言之,我想通过一个C接口来更新上面提到的表 do { printf("Insert For_Sconti: \n"); scanf("%s", For_Sconti); } wh

我有一张桌子:

For_Sconti  |    Cat_Sconti    |  Sconto 

  7148               A1          451.00
如何防止用户在以下情况下为\u Sconti值在表中插入错误的not 正在尝试更新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,则用户试图修改不存在的\u Sconti。

以下是您必须遵循的步骤: 1.-获取For_Sconti值。 2.-编写一个类似以下内容的查询: SprintFoutString从myTable中选择%s,readValue


3.-然后检查结果是否包含内容如果包含内容,则允许用户插入新值,否则警告用户错误。

主键防止重复;外键限制允许值的范围

假设您有一个外键约束,您可能只想尝试插入用户提供的数据,并捕获违反外键约束时C接口库返回的错误。此方法只需要到数据库的一次往返

如果您想知道数据库中是否存在用户提供的值,请执行类似这样的查询,并检查其返回值

SELECT (COUNT(*) > 0) as For_sconti_exists
FROM Sconti
WHERE For_sconti = <the user-supplied value>
此方法需要两个有效值往返,一个用于确定值是否存在,另一个用于插入行。你也必须

注意事务隔离级别, 在单个事务中执行这两条语句,或者有人可以删除您认为在选择时间和插入时间之间具有有效值的行,以及 不管怎样,还是要捕捉错误。
您想要的是将\u Sconti设置为a。我想要的不是阻止插入重复项。.实际上,用户不应该插入不在表中的值…因为\u Sconti和Cat\u Sconti是外键谢谢…我尝试了此操作,但我无法再执行memsetquery,0,200;strcatquery,从Sconti中选择For_Sconti,其中For_Sconti=';strcatquery,For_Sconti;strctquery,“和Cat_Sconti=”;strcatquery,Cat_Sconti;strctquery,”;;strctquery,”;;结果=mysql\u存储\u结果连接;然后,一旦我存储了查询结果,我该如何使用mysql受影响的行?在INSERT/UPDATE/DELETE命令之后使用这个命令。它将显示有多少行受到影响。