我很难找到有关此主题的信息。我在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);
答案 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)
我听说过&#34; mysql&#34;将在未来的PHP上删除.. 使用&#34; mysqli&#34;你可以使用mysqli_multi_query