3
아래 스크린 샷과 같은 페이지가 있습니다. 아이디어는 버스 번호와 특정 노선의 모든 정류장 목록을 한 줄에 하나씩 입력하는 것입니다.PHP MySQL PDO TextArea 조건 검사가있는 Where 절
정거장이 이미이라는 데이터베이스 테이블에 저장됩니다 내가 텍스트 영역에서 각 지점의 ID가 필요합니다 '중지'. 내 현재 코드는 텍스트 영역의 마지막 중지 ID 만 가져옵니다. 나는 뭔가를 놓치고있는 것처럼 느낀다. 'busnumber'는 내 텍스트 필드이고 'busroute'는 내 텍스트 영역입니다. 나는 누군가가 배열로서 텍스트 영역에 입력 된 각 정지의 ID를 얻기 위해 내가 바꿀 필요가있는 것을 지적 할 수 있으면 고맙겠습니다. 미리 시간을내어 주셔서 감사합니다.
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
if(isset($_POST["busnumber"], $_POST["busroute"])){
$stops = explode(PHP_EOL, $_POST["busroute"]);
foreach($stops as $stop){
$sql = "SELECT * FROM stops WHERE stop_name = '".$stop."'";
$statement = $conn->query($sql);
echo $sql.'</br>';
$statement->setFetchMode(PDO::FETCH_ASSOC);
$results = $statement->fetchAll();
foreach($results as $result){
echo $result['stop_id'].' '.$result['stop_name'];
}
$statement = null;
}
}
을 다음과 여전히 같은 출력을 얻을 나는 코드를 변경 한
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
if(isset($_POST["busnumber"]) && isset($_POST["busroute"])){
$stops = explode(PHP_EOL, $_POST["busroute"]);
$stopsArray = '"' . implode('","', $stops) . '"';
$sql = "SELECT * FROM stops WHERE stop_name IN ($stopsArray)";
echo $sql."</br>";
$query = $conn->prepare($sql);
$query->execute();
$query->setFetchMode(PDO::FETCH_ASSOC);
$results = $query->fetchAll();
foreach($results as $result){
echo $result['stop_id'].' '.$result['stop_name'].'</br>';
}
}
} catch (PDOException $pe) {
die("Could not connect to the database $dbname :" . $pe->getMessage());
}
UPDATE, 그것은 단지 텍스트 영역 안에 나에게 마지막 항목의 ID를 제공합니다
'인 print_r ($ 결과)'foreach 루프 내부와 그 반환을 확인할! – Saty
Array ([stop_id] => 3 [stop_name] => 16TH ROAD) @Saty – PirateApp
은 하나의 결과 만 반환한다는 것을 의미합니다. phpmyadmin에 직접 쿼리를 실행하고 쿼리로 반환되는 행 수를 확인하십시오 !! – Saty