Php游戏Sql问题

Php游戏Sql问题,php,sql,game-engine,Php,Sql,Game Engine,我需要这段代码的帮助,我需要它来添加一个数组 在成员下面,用- 我需要将帮派中的每个成员都列在“成员”下,并与其他成员分开- 这样我就可以在下面引爆它们 这是一条将成员加入帮派的路线,但它没有——我认为它抹去了已经存在的成员 $result = mysql_query("UPDATE Gangs SET members='".$name."'WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'") or die(mysql_

我需要这段代码的帮助,我需要它来添加一个数组 在成员下面,用-

我需要将帮派中的每个成员都列在“成员”下,并与其他成员分开- 这样我就可以在下面引爆它们

这是一条将成员加入帮派的路线,但它没有——我认为它抹去了已经存在的成员

$result = mysql_query("UPDATE Gangs SET members='".$name."'WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'")
or die(mysql_error());
完整代码
if(isset($_POST['creategang'])){

if(empty($_POST['gang_name'])){ 
echo "Enter a Gang Name.";
} else {

if (strlen($_POST['gang_name']) > "20"){
echo "The username may not consist out of more then 20 characters.";
}else{

if (ereg('[^A-Za-z0-9]', $_POST['gang_name'])) {
echo "Invalid Name only A-Z,a-z and 0-9 is allowed.";
}else{
$sql = "SELECT name FROM Gangs WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'";
$query = mysql_query($sql) or die(mysql_error());
$m_count = mysql_num_rows($query);

if($m_count >= "1"){
echo 'This name has already been used.!';
}else{
$sql = "INSERT INTO Gangs SET name = '".$_POST['gang_name']."' , owner= '$name'";

$res = mysql_query($sql);

$result = mysql_query("UPDATE users SET gang='".mysql_real_escape_string($_POST['gang_name'])."' WHERE id='" .mysql_real_escape_string($_SESSION['user_id']). "'") 
or die(mysql_error());

$result = mysql_query("UPDATE Gangs SET members='".$name."'WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'")
or die(mysql_error());

echo 'Gang successfully created!';
}
}
}
}
}
?>
这是我将用来分隔数组的代码

$Gang_array = explode("-", $Gang_members);
感谢您查看我的问题,并提前感谢您的帮助

要添加到组中的新代码

<? include_once("connect.php"); ?>

<?
if(isset($_SESSION['user_id'])) {
 // Login OK, update last active

 $sql = "UPDATE users SET lastactive=NOW() WHERE id='".mysql_real_escape_string($_SESSION['user_id'])."'";
 mysql_query($sql);

}else{
   header("Location: index.php");
     exit();
 }
$sql = "SELECT * FROM users WHERE id='".mysql_real_escape_string($_SESSION['user_id'])."'";
$query = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_object($query);
$id = htmlspecialchars($row->id);
$userip = htmlspecialchars($row->userip);
$name = htmlspecialchars($row->name);
$sitestate = htmlspecialchars($row->sitestate);
$password = htmlspecialchars($row->password);
$mail = htmlspecialchars($row->mail);
$money = htmlspecialchars($row->money);
$exp = htmlspecialchars($row->exp);
$rank = htmlspecialchars($row->rank);
$health = htmlspecialchars($row->health);
$points = htmlspecialchars($row->points);
$profile = htmlspecialchars($row->profile);
$gang = htmlspecialchars($row->gang);
?>

<?php 
$sql = "SELECT * FROM Gangs WHERE name='".mysql_real_escape_string($_GET['name'])."'";
$query = mysql_query($sql)  or die(mysql_error());
$row = mysql_fetch_object($query);
$Gang_name = htmlspecialchars($row->name);
$Gang_owner = htmlspecialchars($row->owner);
$Gang_money = htmlspecialchars($row->money);
$Gang_exp = htmlspecialchars($row->exp);
$Gang_level = htmlspecialchars($row->level);
$Gang_members = htmlspecialchars($row->members);
$Gang_array = explode("-", $Gang_members);



$Gang_profile = htmlspecialchars($row->profile);

?>
<div id="content" class="profile">
    <h2>Gang Profile</h2>
<form method="post" >
<input type="submit" name="Petition" id="Petition" value="Petition">
</form>
<center>
<h1><?php echo $Gang_name; ?></h1>
Owner: <?php echo $Gang_owner; ?><br>
Gang Cash: $<?php echo $Gang_money; ?><br>
Gang Exp: <?php echo $Gang_exp; ?><br>
Gang Level: <?php echo $Gang_level; ?><br>
Gang Members: <?php echo $Gang_array; ?><br>
</center><br>
<p>Gang Quote</p>
<div id="UserText">
      <?php
    $Gang_profile = htmlentities($Gang_profile);
    $Gang_profile = nl2br($Gang_profile); 
    $Gang_profile = stripslashes($Gang_profile);
    echo $Gang_profile; ?>
</div>
</div>

<? 
if (isset($_POST['Petition'])) {
$result = mysql_query("SELECT members FROM Gangs 
      WHERE name='".$Gang_name."'");
if ($result) {
      while($row = mysql_fetch_assoc($result)) {
           $members = $row['members'];
      }
}
if ($members != '') $members .= '-'.$name;
else $members = $name;
$result = mysql_query("UPDATE Gangs SET members='".$members."' WHERE name='".$Gang_name."'");

}

伪代码,但这可能会起作用:

$result = mysql_query("UPDATE Gangs SET members = members + '-' + '".$name."'WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'")
or die(mysql_error());

伪代码,但这可能会起作用:

$result = mysql_query("UPDATE Gangs SET members = members + '-' + '".$name."'WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'")
or die(mysql_error());

如果我没弄错你的问题。您可以尝试以下方法:

首先获取成员:

$result = mysql_query("SELECT members FROM Gangs 
      WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'");
if ($result) {
      while($row = mysql_fetch_assoc($result)) {
           $members = $row['members'];
      }
}
然后添加新成员并执行更新:

//This is to check whether $name is already in the gangs
if (strpos($members,$name) !== false) {
    if ($members != '') $members .= '-'.$name;
    else $members = $name;

    //Update to gangs
    $result = mysql_query("UPDATE Gangs SET members='".$members."' WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'");
}
else sprintf("%s is in the gangs already",$name);

希望能有帮助。

如果我正确理解你的问题。您可以尝试以下方法:

首先获取成员:

$result = mysql_query("SELECT members FROM Gangs 
      WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'");
if ($result) {
      while($row = mysql_fetch_assoc($result)) {
           $members = $row['members'];
      }
}
然后添加新成员并执行更新:

//This is to check whether $name is already in the gangs
if (strpos($members,$name) !== false) {
    if ($members != '') $members .= '-'.$name;
    else $members = $name;

    //Update to gangs
    $result = mysql_query("UPDATE Gangs SET members='".$members."' WHERE name='".mysql_real_escape_string($_POST['gang_name'])."'");
}
else sprintf("%s is in the gangs already",$name);

希望能有所帮助。

您能提供表结构及其关系吗?您能提供表结构及其关系吗?我以为它可以工作,但我将测试添加到了组中,结果显示为-test,然后我添加了测试2。现在,组中只有-test2,而不是-test-test2。您能给我显示用于选择成员和结果?对不起,我忘了更改代码中的一行,我不得不在另一个位置使用此代码,以便其他人加入帮派。我将使用此代码更新帖子。我忘了更改搜索members@Tprice88我更新了我的答案,我认为我的索引名错了。它应该是$row['members'],而不是$row['member']。我还添加了一个条件来检查成员是否是,我们不需要在其上添加“-”。@Tprice88请再次检查我的答案。我已经修改了它来检查这个名字是否已经在帮派里了。它应该会起作用。我知道你的数据库结构不够好。如果我可以建议你,你最好为成员创建一个单独的表,然后定义帮派和成员之间的关系是否为1-n,n-1或n-m。我以为它可以工作,但我在帮派中添加了测试,结果是-test然后我添加了测试2现在我在帮派中只有-test2,而不是-test-test2。你能给我显示选择成员的查询以及结果吗?对不起,我忘了更改代码中的一行,我不得不在另一个地方使用它,以便其他人添加到帮派中我会用此代码更新帖子忘记更改它搜索的帖子members@Tprice88我更新了我的答案,我认为我的索引名错了。它应该是$row['members'],而不是$row['member']。我还添加了一个条件来检查成员是否是,我们不需要在其上添加“-”。@Tprice88请再次检查我的答案。我已经修改了它来检查这个名字是否已经在帮派里了。它应该会起作用。我知道你的数据库结构不够好。如果我可以建议您,您最好为成员创建一个单独的表,然后定义帮派和成员之间的关系,无论是1-n、n-1还是n-m。