Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> pomoc z zapytanie mysql - PDO
csharp
post
Post #1





Grupa: Zarejestrowani
Postów: 127
Pomógł: 3
Dołączył: 22.04.2012
Skąd: Warszawa

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


Cześć, w bazie mam coś takiego:

id_service | date

1 2013-03-15
2 2013-03-14

w zapytaniu gdy pojawia się taki warunek:

  1. AND services.id NOT IN (SELECT id_service FROM services_dates WHERE LOCATE(DATE_FORMAT(`date`, '%m/%d/%Y'), :main_form_calendar) <> 0)


to wywala mi błąd...

  1. Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /home/wedding/domains/wedding.cupit.pl/public_html/functions/searchservices.php on line 271


może to się przyda...

  1. IF (isset($search['main_form_calendar'])) $stmt->bindParam(':main_form_calendar', $search['main_form_calendar']);


  1. IF ($stmt->execute() && $stmtCount->execute()) {
  2. $stmt->setFetchMode(PDO::FETCH_ASSOC);
  3.  
  4. $rows = $stmtCount->fetchAll();


bez tego warunku mi wszystko śmiga... chodzi o to, że przekazuje datę

  1. Array ( [main_form_service] => 1 [main_form_post_code] => 82-300 [main_form_calendar] => 03/12/2013 )


i chce sprawdzić czy w tej tabeli nie ma przypadkiem tej daty, jeśli jest to rekord nie może się pokazać, jeśli nie ma to przepuszcza..

dzięki za pomoc.

Ten post edytował csharp 9.03.2013, 11:05:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nithajasz
post
Post #2





Grupa: Zarejestrowani
Postów: 230
Pomógł: 27
Dołączył: 27.05.2008
Skąd: Warszawa

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


A czy przypadkiem nie przekazujesz tej daty w pętli jakiejś z jakimiś rekordami i masz przypadek, że któryś rekord tej daty nie ma przez co nie występuje bindowanie parametru do zapytania co skutkuje błędem, który wkleiłeś..?

Po drugie tak nawiasem mówiąc warunek w zapytaniu typu WHERE cos IN ( SELECT ... jest złym pomysłem pod kątem wydajności, gdyż do każdego rekordu wykonujesz dodatkowe zapytanie, dla przykładu przy tabeli 100 rekordów zamiast jednym zapytaniem pobrać wyniki wykonasz 101 zapytań, a przy tabeli 10 mln rekordów sam zgadnij jak to wyjdzie pod kątem wydajności (IMG:style_emoticons/default/smile.gif)

Go to the top of the page
+Quote Post
csharp
post
Post #3





Grupa: Zarejestrowani
Postów: 127
Pomógł: 3
Dołączył: 22.04.2012
Skąd: Warszawa

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


no właśnie tak może być.. bo nie wszystki rekordy mają tę datę, ja chciałem odrzucic tylko te, które mają przypisaną datę...

baza jest mała, więc wydajności nie brałem tutaj pod uwagę, ale dzięki za pomoc.
Go to the top of the page
+Quote Post

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: 22.12.2025 - 14:09