wemos thingspeak dht11

i can only be reading from one sensor is there is anything wrong with the code

#include <DHT.h>

#include <ESP8266WiFi.h>

// replace with your channel’s thingspeak API key and your SSID and password
String apiKey = "7278LJY09HZVM2ZS";
const char* ssid = "murattu kalai";
const char* password = "thalapathy";
const char* server = "api.thingspeak.com";




DHT dht1(D8, DHT11);

DHT dht2(D3, DHT11);

DHT dht3(D2, DHT11);


WiFiClient client;

void setup()
{
  Serial.begin(115200);
  delay(10);
  dht1.begin();
  dht2.begin();
  dht3.begin();

  WiFi.begin(ssid, password);

  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

}

void loop()
{

  float h1 = dht1.readHumidity();
  float t1 = dht1.readTemperature();

  float h2 = dht2.readHumidity();
  float t2 = dht2.readTemperature();

  float h3 = dht3.readHumidity();
  float t3 = dht3.readTemperature();

  if (isnan(h1) || isnan(t1))
    if (isnan(h2) || isnan(t2))
      if (isnan(h3) || isnan(t3))
      {
        Serial.println("Failed to read from DHT1 sensor!");
        Serial.println("Failed to read from DHT2 sensor!");
        Serial.println("Failed to read from DHT3 sensor!");
        return;
      }

  if (client.connect(server, 80)) {
    String postStr = apiKey;
    postStr += "&field1=";
    postStr += String(t1);
    postStr += "&field2=";
    postStr += String(h1);
    postStr += "&field3=";
    postStr += String(t2);
    postStr += "&field4=";
    postStr += String(h2);
    postStr += "&field5=";
    postStr += String(t3);
    postStr += "&field6=";
    postStr += String(h3);
    postStr += "\r\n\r\n";

    client.print("POST /update HTTP/1.1\n");
    client.print("Host: api.thingspeak.com\n");
    client.print("Connection: close\n");
    client.print("X-THINGSPEAKAPIKEY: " + apiKey + "\n");
    client.print("Content-Type: application/x-www-form-urlencoded\n");
    client.print("Content-Length: ");
    client.print(postStr.length());
    client.print("\n\n");
    client.print(postStr);

    Serial.print("Temperature1: ");
    Serial.print(t1);
    Serial.print(" degrees Celsius Humidity1: ");
    Serial.print(h1);
    Serial.println("Sending data to Thingspeak");
    
    Serial.print("Temperature2: ");
    Serial.print(t2);
    Serial.print(" degrees Celsius Humidity2: ");
    Serial.print(h2);
    Serial.println("Sending data to Thingspeak");
    
    Serial.print("Temperature3: ");
    Serial.print(t3);
    Serial.print(" degrees Celsius Humidity3: ");
    Serial.print(h3);
    Serial.println("Sending data to Thingspeak");
  }
  client.stop();

  Serial.println("Waiting 20 secs");
  // thingspeak needs at least a 15 sec delay between updates
  // 20 seconds to be safe
  delay(20000);
}

This code is probably not doing what you expect it to do:

  if (isnan(h1) || isnan(t1))
    if (isnan(h2) || isnan(t2))
      if (isnan(h3) || isnan(t3))
      {
        Serial.println("Failed to read from DHT1 sensor!");
        Serial.println("Failed to read from DHT2 sensor!");
        Serial.println("Failed to read from DHT3 sensor!");
        return;
      }

i can only be reading from one sensor is there is anything wrong with the code

What does that mean? Do you get an error from the others?

BTW, you should read the temperature first as in readTemperature() the reading is forced while in readHumidity() a value from the previous readTemperature() is used if available.

Post a wiring diagram of your setup.