Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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中使用select子查询子句执行update语句_Mysql_C_Database - Fatal编程技术网

Mysql 在C中使用select子查询子句执行update语句

Mysql 在C中使用select子查询子句执行update语句,mysql,c,database,Mysql,C,Database,我有以下在C中运行的sql: snprintf(sql, 200, "update rec set name = (select name from pers where id = %d ) where id = %d",rec_id , emp_id ); mysql\u query(conn,sql)返回一个成功的结果,但它将1放入“name”字段的“rec”表中,而不是名称,但是当我printf输出并在mysql中使用它时,它工作正常 update rec set name = (se

我有以下在C中运行的sql:

snprintf(sql, 200, "update rec set name = (select name from pers where id = %d ) 
where id = %d",rec_id , emp_id );
mysql\u query(conn,sql)
返回一个成功的结果,但它将1放入“name”字段的“rec”表中,而不是名称,但是当我
printf
输出并在mysql中使用它时,它工作正常

update rec set name = (select name from pers where id = 104 ) where id =  43
我的
sprintf
有什么问题吗?还是要加些什么

我也尝试过这样的静态sql命令

snprintf(sql,"update rec set name = (select name from pers where id = 104 ) where id = 43"); 

它还把1放在rec.name中

这是由于子查询返回的记录计数造成的吗?您是否可以通过设置一个返回2条记录的条件进行验证,以便将名称设置为2?如果这是原因,那么(尽管这种方法性能较差)尝试拆分查询,看看这次是否有效

激活MySQL并查看它到底执行了什么命令是很有趣的。执行printf(“%s”,sql)以查看您是否正确构建了查询。常规日志显示“Quit”我执行了printf,如上图中所示question@user_iv:很明显,
Quit
不是我们感兴趣的日志条目。它显示了什么命令导致
rec.name
变成
1