保持MYSQL连接功能可以进行多次查询

时间:2015-06-16 02:52:26

标签: mysql c raspberry-pi

我很难找到有关此主题的信息。我在Raspberry Pi上有一个正在运行的应用程序,我在下面的代码中有一个无限循环。除此之外,我有MYSQL *con;可以重复使用。所以我的代码第一次运行良好,但第二次我得到以下错误。我认为添加MYSQL_close()可以解决这个问题,但事实并非如此。

输出:

valor: d9274cb5   -651735883
valor: d9274cb5   -651735883
1
This handle is already connected. Use a separate handle for each connection.

代码:

                    uint32_t intVal;
                    sscanf(&sn_str[1],"%x",&intVal);
                    fprintf(stderr, "valor: %x   %d\n", intVal, intVal);
                    if (mysql_real_connect(con, "localhost", "rfid", "******",
                            "Order2Dock", 0, NULL, 0) == NULL)
                    {
                            fprintf(stderr, "1 \n");
                            finish_with_error(con);
                    }
                    if (mysql_query(con, "INSERT INTO `Order2Dock`.`Actividad`(`TiempoInicio`,`Proceso_Id`, `Orden_Id`)     VALUES (now(),1,1)")) {
                            fprintf(stderr, "2 \n");
                            finish_with_error(con);
                    }
                    mysql_close(con);

2 个答案:

答案 0 :(得分:2)

将你的连接命令保持在循环之外

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
if (!$mysqli) {
 fprintf(stderr, "1 \n");
 finish_with_error(con);
}

然后启动循环,每次循环时都不需要连接:

while (1+1 = 2){
 if (!$mysqli){ 
  $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
 }
 uint32_t intVal;
 sscanf(&sn_str[1],"%x",&intVal);
 fprintf(stderr, "valor: %x   %d\n", intVal, intVal);
 if ($mysqli->query("INSERT INTO `Order2Dock`.`Actividad`(`TiempoInicio`,`Proceso_Id`, `Orden_Id`) VALUES (now(),1,1)") === TRUE) {
  echo '<p>Yeah, another query!!</p>';
 }
}

编辑:我刚刚添加了一个条件来测试链接是否仍在运行,否则重新连接到数据库。

我只是在想,如果这是一个无限循环,运行在像apache或IIS这样的Web服务器上......那么必须配置一些东西,让脚本永远运行,防止Web服务器计时。

干杯。

答案 1 :(得分:0)

w3schools

php refrerence

我听说过&#34; mysql&#34;将在未来的PHP上删除.. 使用&#34; mysqli&#34;你可以使用mysqli_multi_query