데이터베이스 열에 배열을 저장하려고했지만 아직 성공하지 못했습니다.데이터베이스 열에 배열을 저장하는 방법
저는 2 주 동안 PHP와 SQL을 조사해 왔으며 프로그래밍에 대한 배경 지식이 없습니다. 그러니 내 무지를 용서해주십시오. 나는 실수를 많이했다고 확신한다.
내 상황을 자세히 설명하겠습니다.
관리자가 일부 게임과 관련된 일부 데이터를 입력 할 수 있도록 웹 페이지를 만들었습니다. 이것은 로그인 프로세스 후입니다. 관리자가이 시점에 도착하면 나는 지금 '정확한'입력으로 귀찮게하지 않습니다. DB에있는 데이터를 가져오고 싶습니다.
+--------+--------+-----+-----+------+------+------+
|game_id |round_id|team1|team2|score1|score2|result|
+--------+--------+-----+-----+------+------+------+
| 1 | 1 | A | B | NULL | NULL | NULL |
| 2 | 1 | C | D | NULL | NULL | NULL |
| 3 | 1 | E | F | NULL | NULL | NULL |
| 4 | 2 | E | C | NULL | NULL | NULL |
| 5 | 2 | A | D | NULL | NULL | NULL |
| 6 | 2 | F | B | NULL | NULL | NULL |
+--------+--------+-----+-----+------+------+------+
가 그럼 난 당 팀을 표시하려면이 테이블에서 데이터를 사용하는 PHP 페이지에서 양식을 만든 :
나는 내가 지금까지 가지고 MySQL의에
games
라는 테이블을 생성하고 데이터로 채워진 경기.
관리자는이 양식을 사용하여 게임 점수와 결과를 채 웁니다. 아래 양식을 참조하십시오.이 양식은 위 표에 값을 저장하는 데 필요합니다.
input.php
<?php
mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
$query="SELECT games_team1, games_team2 FROM games WHERE round_id = 1";
$result = mysql_query($query);
?>
<form action="someform.php" method="post">
<table id="inputgameresults">
<tbody>
<tr>
<th>Home</th>
<th>Score 1</th>
<th>-</th>
<th>Score 2</th>
<th>Away</th>
<th>Result</th>
</tr>
<?php while($row = mysql_fetch_array($result)) { ?>
<tr>
<td><?php echo $row['team1']; ?></td>
<td><input type="text" name="score1[]"/></td>
<td> - </td>
<td><input type="text" name="score2[]"/></td>
<td><?php echo $row['team2']; ?></td>
<td><input type="text" name="result[]"/></td>
</tr>
<?php } ?>
<tr>
<td></td>
<td</td>
<td</td>
<td</td>
<td</td>
<td><input type="submit" value="Submit"/></td>
</tr>
</tbody>
</table>
</form>
이 상기 형태의 표 3 열로 결과
. 이 테이블은 각 경기의 팀과 점수 및 결과에 대한 입력 필드를 표시합니다. 헤더, 게임이있는 3 개의 행, 게임 뒤의 입력 필드 및 아래의 엄한 버튼.관리자는 아래 양식을 사용하여 입력을 제출할 수 있습니다. 출력이 올바른지 확인할 수 있도록 에코를 추가했습니다. 에코는 매력처럼 작동합니다. 이것은 내가 가지런 히 가지 않는 곳입니다. 내가 사용하는 SQL 쿼리는 폼에 설명되어 있습니다. 그것은 아마도 지식의 부족 때문에 비참하게 실패합니다.
<?php
mysql_connect("xxx", "xxx", "xxx") or die(mysql_error());
mysql_select_db("xxx") or die(mysql_error());
$sc1 = $_POST['score1'];
$sc2 = $_POST['score2'];
$res = $_POST['result'];
foreach($sc1 as $value) {
echo "score team 1 $value<br/>";
mysql_query("UPDATE games SET game_score1 = '".$value[]"' WHERE games_id = [1,2,3] ");
}
foreach($sc2 as $value) {
echo "score team 2$value<br/>";
}
foreach($res as $value) {
echo "res $value<br/>";
}
?>
form1.php
주요 초점은 이제 양식의 입력란을 db의 올바른 위치에 가져 오는 것입니다. 양식의 데이터는 score1, score2 및 게임의 결과 열에있는 데이터베이스로 보내야합니다.
어떤 도움이나 조언을 환영합니다!
PHP 설명서에서'$ _POST' 변수에 대한이 주석을보십시오 : http://php.net/manual/ ko/reserved.variables.post.php # 87650. 당신은''와 같은 것을해야합니다. 여기서 0은'game_id'입니다. 동일한 주석에서 언급 한 것처럼'input.php'에서 연상 배열에 접근합니다. –
try : where games_id = "..."(값을 따옴표로 묶으십시오). 또한 데이터베이스에 배열을 저장하려면 직렬화를 살펴보십시오. – Bogdan
일반적으로 데이터베이스에 배열과 같은 데이터를 저장하는 것은 좋지 않습니다. 유용한 검색을 수행하는 것이 불가능하지는 않더라도 어렵게 만들 것입니다.이 부분이 정상적으로 작동하는 경우가 있지만 확실 할 것입니다. 이 경우, 또 다른 방법은 속성 값 테이블입니다.이 값 테이블은 좀 더 복잡하지만 조금 복잡하고 데이터를 검색 할 수있는 기능을 유지합니다. – ArtisticPhoenix