有人可以告诉我这些IF语句出了什么问题吗?

if(isset($_POST['submit']))
{
    $dropship = $unitid['id'];
    $jumpship = $_POST['jumpship'];
    $dsdest = $_POST['planet'];
    $dslz = $_POST['landingzone'];
    $dsmission = $_POST['mission'];
    $ds1 = mysql_query("SELECT id, ds1 FROM gc3025_game_jumpships WHERE `id`='$jumpship'");
    $ds2 = mysql_query("SELECT id, ds2 FROM gc3025_game_jumpships WHERE `id`='$jumpship'");
    $ds3 = mysql_query("SELECT id, ds3 FROM gc3025_game_jumpships WHERE `id`='$jumpship'");

    $dist_loc_get2 = mysql_query("SELECT * FROM gc3025_dist_game WHERE `planet`='$dsdest' AND `districtid`='$dslz'");
    $distloc2 = mysql_fetch_assoc($dist_loc_get2);
    $newdist = $distloc2['g_district'];
    $ds_name_get = mysql_query("SELECT * FROM gc3025_game_dropships WHERE `id`='$dropship'");
    $ds_name = mysql_fetch_assoc($ds_name_get);
    $dsname = $ds_name['unit_name'];

    $dest_name_get = mysql_query("SELECT gc3025_planets_game.Game, gc3025_planets_game.owners, gc3025_planets_game.g_planet, gc3025_planets_game.Planet_id, gc3025_planets_id.planet_name  FROM gc3025_planets_id JOIN gc3025_planets_game ON gc3025_planets_id.id = gc3025_planets_game.Planet_id WHERE `g_planet`='$dsdest'");
    $dest_name = mysql_fetch_assoc($dest_name_get);
    $destname = $dest_name['planet_name'];

    $dsdz_name_get = mysql_query("Select gc3025_dist_game.districtid, gc3025_dist_game.g_district, gc3025_dist_labels.id, gc3025_dist_labels.dist_name FROM gc3025_dist_game JOIN gc3025_dist_labels ON gc3025_dist_game.districtid = gc3025_dist_labels.id WHERE `g_district`='$newdist'");
    $dsdz_name = mysql_fetch_assoc($dsdz_name_get);
    $dsdzname = $dsdz_name['dist_name'];

    $dsmission_name_get = mysql_query("SELECT * FROM gc3025_movement_dropdowns WHERE `id`='$dsmission'");
    $dsmission_name = mysql_fetch_assoc($dsmission_name_get);
    $dsmissionname = $dsmission_name['mission_type'];

    if ($ds1 == 0){
    mysql_query ("UPDATE `gc3025_game_jumpships` SET `ds1` = '$dsname', `ds1dest` = '$destname', `ds1dz` = '$dsdzname', `ds1mission` = '$dsmissionname' WHERE `id`='$jumpship'");
    }
    if ($ds1 == 1){
    mysql_query ("UPDATE `gc3025_game_jumpships` SET `ds2` = '$dsname', `ds2dest` = '$destname', `ds2dz` = '$dsdzname', `ds2mission` = '$dsmissionname' WHERE `id`='$jumpship'");
    }
    if ($ds2 == 1){
        mysql_query ("UPDATE `gc3025_game_jumpships` SET `ds3` = '$dsname', `ds3dest` = '$destname', `ds3dz` = '$dsdzname', `ds3mission` = '$dsmissionname' WHERE `id`='$jumpship'");
        }
    if ($ds3 == 1){
        echo "This Jumpship is Full!";
      }

    echo "<p>$dsname Loaded on $jumpship going to $destname and to complete $dsmissionname In District $dsdzname!</p>";


希望这足够了。

基本上,这张桌子是载有3艘飞船的跳船。我需要if语句,以基本上在ds1中包含dropship的情况下,将将该dropship输入到ds2列。如果在ds1和ds2中有一个Dropship,则它将更新ds3列。如果所有三个都有飞船,则回显“此跳船已满”。

最佳答案

函数mysql_query返回resource,并且必须使用mysql_fetch_assoc进行数据提取。此外,查询中的数据应为properly escaped

$ds_query = mysql_query(sprintf(
  "SELECT ds1, ds2, ds3 FROM gc3025_game_jumpships WHERE `id`='%s'",
  mysql_real_escape_string($jumpship)
));

$ds_result = mysql_fetch_assoc($ds_query);

if (!$ds_result['ds1'])
{
  mysql_query(sprintf(
    "UPDATE `gc3025_game_jumpships` " .
    "SET `ds1` = '%s', `ds1dest` = '%s', `ds1dz` = '%s', `ds1mission` = '%s' " .
    "WHERE `id`='%s'",
    mysql_real_escape_string($dsname),
    mysql_real_escape_string($destname),
    mysql_real_escape_string($dsdzname),
    mysql_real_escape_string($dsmissionname),
    mysql_real_escape_string($jumpship)
  ));
}
elseif ($ds_result['ds1'])
{
  // and so on
}
elseif ($ds_result['ds2'])
{
  // and so on
}

关于php - PHP MYSQL多个更新的if语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34665897/

10-14 13:25