Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Połączenie rekordów z 2 kolumn
Przemo75
post
Post #1





Grupa: Zarejestrowani
Postów: 66
Pomógł: 2
Dołączył: 9.03.2004
Skąd: POLSKA

Ostrzeżenie: (0%)
-----


Witam,
Potrzebuję przerobić wyszukiwarkę, żeby zamiast jednego z select'ów (model) wyświetlał połączone rekordy z 2 kolumn (model + nadwozie).

Mam takie coś:

  1. include('dbconfig.php');
  2. $action = $_REQUEST['action'];
  3.  
  4. if ($action=='showAll')
  5. {
  6. $id = "0";
  7. } else {
  8. $id=$_POST['id'];
  9. }
  10.  
  11. switch(true)
  12. {
  13. case ($action == 'showAll' OR ($action == 'marka' and $id == '')):
  14. default:
  15. $stmt=$DB_con->prepare('SELECT marka FROM haki2 GROUP BY marka');
  16. $stmt->execute();
  17. break;
  18.  
  19. case ($action == 'marka' OR ($action == 'model' and $id == '')):
  20. $marka = $_POST['marka'];
  21. $stmt=$DB_con->prepare('SELECT model FROM haki2 WHERE marka=:marka GROUP BY model ORDER BY model');
  22. $stmt->execute(array(':marka'=>$marka));
  23. break;
  24.  
  25. case ($action == 'model' OR ($action == 'rocznik' and $id == '')):
  26. $marka = $_POST['marka'];
  27. $model=str_replace("\\", "", $_POST['model']);
  28. $stmt=$DB_con->prepare('SELECT rok_produkcji FROM haki2 WHERE model=:model GROUP BY rok_produkcji ORDER BY rok_produkcji');
  29. $stmt->execute(array(':model'=>$model));
  30. break;
  31.  
  32. case ($action == 'rocznik'):
  33. $marka = $_POST['marka'];
  34. $model=str_replace("\\", "", $_POST['model']);
  35. $rocznik=str_replace("\\", "", $_POST['rocznik']);
  36. $stmt=$DB_con->prepare('SELECT * FROM haki2 WHERE model=:model AND rok_produkcji=:rocznik ORDER BY rok_produkcji');
  37. $stmt->execute(array(':model'=>$model, ':rocznik'=>$rocznik));
  38. break;
  39. }



Po zmianie zapytania na:

  1. $stmt=$DB_con->prepare('SELECT model, nadwozie, CONCAT(model, " - ", nadwozie) AS model_new FROM haki2 WHERE marka=:marka GROUP BY model_new ORDER BY model_new');


wyrzuca dwa błędy odnoszące się do linii:
  1. $stmt->execute(array(':marka'=>$marka));

1. Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: parameter was not defined':
2. ( ! ) PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in E:\wamp\www\Tomek\2018-04-02\pokaz_haki.php on line 33

Ten post edytował Przemo75 3.04.2018, 14:35:49
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Teraz widzisz na wlasne oczy jak sie konczy zle zaprojektowana baza danych. Zamiast po nazwach powinienies operowac po ID wowczas nie byloby takich problemow. Jak mozesz zmienic to zmien.
Jak nie to + czy : nie powinny miec tutaj zadnego znaczenia. Pewnie problem pojawia sie gdzies po drodze, np. w formularzu i sposobie jego wysylania
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 08:34