Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
Php 如何从MySql服务器获取数据?_Php_Arduino - Fatal编程技术网

Php 如何从MySql服务器获取数据?

Php 如何从MySql服务器获取数据?,php,arduino,Php,Arduino,我正在使用Arduino Uno和SIM900 GSM模块进行一个非常重要的项目。基本上,我从RFID卡(RFID-RC522)正确读取了ID,我需要使用URL将ID发送到主机提供商的数据库(000webhost),我需要获得查询的输出,但正如您将看到的,代码中有一个简单的更改,输出完全更改 以下是需要发送输出的PHP文件的代码: <?php $dbhost = "localhost"; $dbuser = "*******"; $dbpass = "*******"; $db =

我正在使用Arduino Uno和SIM900 GSM模块进行一个非常重要的项目。基本上,我从RFID卡(RFID-RC522)正确读取了ID,我需要使用URL将ID发送到主机提供商的数据库(000webhost),我需要获得查询的输出,但正如您将看到的,代码中有一个简单的更改,输出完全更改

以下是需要发送输出的PHP文件的代码:

<?php
$dbhost = "localhost";
 $dbuser = "*******";
 $dbpass = "*******";
 $db = "********";
 $conn = new mysqli($dbhost, $dbuser, $dbpass,$db);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
mysqli_select_db($conn,$db);
date_default_timezone_set('Europe/Rome');
$date = date("Y-m-d G:i:s");
$code=$_REQUEST['code'];

$sql_u = "SELECT * FROM users WHERE code='$code'";
$res_u = mysqli_query($conn, $sql_u);
if (mysqli_num_rows($res_u) > 0) 
{
    echo "ALREADY EXISTENT $code";

}
else
{
    $sql = "INSERT INTO users(code,used) VALUES ('$code','$date')";
    if (mysqli_query($conn, $sql)) {
        echo "SUCCESS $code";

    } else {
        echo "ERROR INSERTING $code";

    }
}


mysqli_close($conn);
?>
如果您仔细查看Arduino代码的最后一部分,在
myGsm.println(“at+HTTPACTION=0”)行下和行
myGsm.println(“AT+HTTPREAD=0,20”)几乎所有其他SIM900示例都会使用一些延迟。。。我没有使用延迟,但在其他人的帮助下,我做到了,只要SIM900有输出,它就会打印出来,并以这种方式消除延迟。它适用于所有其他命令,但对于最后2个命令,它只是做一些随机的事情,我认为,因为它应该给我php文件的回音结果

现在看看我是否启用了两个延迟:

myGsm.println("AT+HTTPACTION=0"); //submit the GET request 
delay(8000);//the delay is important if the return data are very large, the time required longer.
printSerialData();

myGsm.println("AT+HTTPREAD=0,20"); // read the data from the website you access
delay(3000);
printSerialData();
现在通过启用这两行,输出如下(正确):


你的问题到底是什么?你的标题暗示了mysql的问题,但你的描述暗示了另一个问题,这似乎已经被你的另一篇文章解决了。感谢社区的帮助,我设法不使用延迟,但现在的问题是,+HTTPACTION=0和+HTTPREAD=0,20的最后两个函数没有输出任何内容,因为在我看来,看起来他们需要更多的时间,我可以通过增加8000毫秒的延迟来解决这个问题,但是我们回到了我试图解决的第一个问题,那就是消除所有延迟。如何给命令足够的时间执行?我不知道他们什么时候接收完数据,这样我就可以输出数据了……这就是问题所在。
AT+CGATT=1

OK

AT+SAPBR=3,1,"CONTYPE","GPRS"

OK

AT+SAPBR=3,1,"APN","internet.wind"

OK

AT+SAPBR=2,1

+SAPBR: 1,3,"X.X.X.X"

OK

AT+SAPBR=1,1


OK

RFID Code: 172D9B32
AT+HTTPPARA="URL",http://mywebsite.000webhostapp.com/test.php?code=172D9B32

OK

AT+HTTPPARA="CID",1

OK

AT+HTTPACTION=0

OK

AT+HTTPREAD=0,20

OK

myGsm.println("AT+HTTPACTION=0"); //submit the GET request 
delay(8000);//the delay is important if the return data are very large, the time required longer.
printSerialData();

myGsm.println("AT+HTTPREAD=0,20"); // read the data from the website you access
delay(3000);
printSerialData();
AT+CGATT=1

OK

AT+SAPBR=3,1,"CONTYPE","GPRS"

OK

AT+SAPBR=3,1,"APN","internet.wind"

OK

AT+SAPBR=2,1

+SAPBR: 1,1,"X.X.X.X"

OK

AT+SAPBR=1,1

OK

AT+HTTPINIT

OK

RFID Code: 172D9B32
AT+HTTPPARA="URL",http://mywebsite.000webhostapp.com/test.php?code=172D9B32

OK

AT+HTTPPARA="CID",1

OK

AT+HTTPACTION=0

OK

+HTTPACTION:0,200,16

AT+HTTPREAD=0,20

+HTTPREAD:16
SUCCESS 172D9B32
OK