私は私を狂わせ、誰かが助けてくれることを望んでいる問題を抱えています。私は最近、古い方法ではなくmysqlPDOの学習を開始しました。値を配列に取り込み、ループで処理するフォームをまとめました。私が何をしているのかを示すために以下に簡略化しましたが、問題はローカルマシンで正常に動作することですが、ライブでロードされると、forループ中にmysql接続が失われると思います。
フォームは次のとおりです。
<form method="post" action="next.php">
<table border="1" cellspacing="2" cellpadding="3" style="font-size: 11px; font-family: arial;">
<tr>
<td><input type="checkbox" onClick="toggle(this)" /><br/></td>
<td><b>Sub Service Code</b></td>
<td><b>Criteria Value</b></td>
<td><b>Criteria Value 2</b></td>
</tr>
<tr>
<td><input type="checkbox" name="ID[]" value="2" /></td>
<td> John</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type="checkbox" name="ID[]" value="3" /></td>
<td> Paul</td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type="checkbox" name="ID[]" value="4"checked /></td>
<td> Mary</td>
<td> </td>
<td> </td>
</tr>
</table>
<input type="submit" value="Submit" name="next">
</form>
このフォームを処理するために使用しているphpスクリプトは次のようになります。
<?php
if (isset($_POST['next'])) {
?>
<form method="post" action="next-2.php">
<table border="1" cellspacing="2" cellpadding="3" style="font-size: 11px; font-family: arial;">
<tr>
<td><input type="checkbox" onClick="toggle(this)" /><br/></td>
<td><b>Name</b></td>
<td><b>Value</b></td>
<td><b>Value 2</b></td>
<td><b>Select # of Levels</b></td>
</tr>
<?php
$id = $_POST['ID'];
if (empty($id)) {
echo("<p>You didn't select any names.</p>");
} else {
$N = count($id);
echo("<p>You selected $N names(s):</p>");
for($i=0; $i < $N; $i++) {
//echo($id[$i] . " ");
$stmt = $db->query('SELECT * FROM services_main');
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if ($row['ID'] == $id[$i]) {
echo '
<tr>
<td><input type="checkbox" name="ID[]" value="'.$row['ID'].'" checked /></td>
<td> '.$row['Name'].'</td>
<td> '.$row['Value'].'</td>
<td> '.$row['Value 2'].'</td>
<td>
<select name="rate_'.$row['ID'].'" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
</tr>';
}
}
}
}
}
?>
</table>
<input type="submit" value="Submit" name="next-2">
</form>
非ローカル環境では、私はこれを取得しています:
<form method="post" action="next-2.php">
<table border="1" cellspacing="2" cellpadding="3" style="font-size: 11px; font-family: arial;">
<tr>
<td><input type="checkbox" onClick="toggle(this)" /><br/></td>
<td><b>Name</b></td>
<td><b>Value</b></td>
<td><b>Value 2</b></td>
<td><b>Select # of Levels</b></td>
</tr>
<p>You selected 3 names(s):</p>
<tr>
<td><input type="checkbox" name="ID[]" value="2" checked /></td>
<td> John</td>
<td> </td>
<td> </td>
<td>
<select name="rate_2" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
</select>
</td>
</tr>
</table>
<input type="submit" value="Submit" name="next-2">
</form>
db接続が失われる可能性があると思う理由は、「$ N名を選択しました」と設定し、Nの値が3と正しく表示されているためです。つまり、dbを毎回クエリするたびに3回ループする必要があります。各名前の3つのID値の。繰り返しますが、ローカル環境では完全に正常に機能しますが、ライブサーバーでは機能しません。ライブ環境で他の2つではなく、ファーストネームの結果(John)のみが返される理由がわかりません。
最後に、私の各ページに次のデータベース接続ファイルを含めています
$db = new PDO('mysql:host=sitename.org;dbname=name;charset=UTF-8', 'user', 'pwd');
私はこの質問を十分に説明したことを望みます、そしてそれはおそらく私がどういうわけか見落としている単純なものだと思います。ご覧いただきありがとうございます...