Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Iterator wynikow zapytań, mysql, php5 nie widzi takiego zapytania
pirat
post 24.04.2005, 09:42:41
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.05.2003
Skąd: Katowice

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


  1. <?
  2. class MySQLiQueryIterator implements Iterator {
  3.  
  4. protected $link;
  5. protected $query;
  6. protected $key;
  7. protected $valid;
  8. protected $result;
  9.  
  10. public function __construct($link, $query) {
  11. $this->link = $link;
  12. $thisquery = $query;
  13.  
  14. }
  15.  
  16. public function rewind() {
  17. $this->key = 0;
  18.  
  19. if (mysqli_multi_query($this->link, $this->query) ) {
  20. $this->result = mysqli_store_result($this->link);
  21. $this->valid = true;
  22. } else {
  23. $this->result = false;
  24. $this->valid = false;
  25. }
  26. }
  27.  
  28. public function valid() {
  29. //mysqli_more_results() wyprzedza valid() klasy iterator o jedna pozycje
  30. $valid = $this->valid;
  31. $this->valid = mysqli_more_results($this->link);
  32. return $valid;
  33. }
  34.  
  35. public function key() {
  36. return $this->key;
  37. }
  38.  
  39. public function current() {
  40. return $this->result;
  41. }
  42.  
  43. public function next() {
  44. if ($this->result) { mysqli_free_result($thos->result); }
  45. $this->key++;
  46. if (mysqli_next_result($this->link) ) {
  47. $this->result = mysqli_store_result($this->link);
  48. } else {
  49. $this->result = false;
  50. }
  51. }
  52. }
  53.  
  54.  
  55. $db = mysqli_connect('localhost', 'hash', 'haslo', 'thc');
  56.  
  57.  
  58.  
  59. $query = >>>_SQL_
  60. DROP TABLE IF EXISTS users;
  61. CREATE TABLE users(username VARCHAR(50) UNIQUE,
  62. password VARCHAR(50) );
  63. INSERT INTO users VALUES('rasmus', 'zsjdsank');
  64. INSERT INTO users VALUES('zeev', 'zjsdnaka');
  65. SELECT username FROM users;
  66. _SQL_;
  67.  
  68. foreach (new MySQLiQueryIterator($db, $query) as $result) {
  69. if($result) {
  70. while ($row = mysqli_fetch_row($result) ) {
  71. print &#092;"$row[0]n\";
  72. }
  73.  
  74. }
  75. }
  76.  
  77.  
  78.  
  79. ?>


zgłasza że w lini 60:
Parse error: syntax error, unexpected T_SR in c:\wamp\www\phpproject\iterator.php

to jest przyklad z ksiazki ;] php nowe mozliwosci, w sumie nie wiem czemu uzywa sie tutaj >>> (co to operator biotwy jakis?) i wogole zadnych cudzyslowow, jak probowalem wlozyc cudzyslowy, to wogole nie wykonuje tego zapytania (cos zle w klasie? czy co.. ?) wkurzam sie powoli na ta ksiazke, juz z dwa razy blad wychwycilem w tych kodach (literowka, a drugi zla nazwa funkcji), teraz albo nie widze gdzie jest blad(troszke w pospiechu czytam ksiazke, moze cos przeoczylem), albo znowu cos w ksiazce zwalili.

ps. fajne to php 5 (skladnie to z JAVY wyjeli ;] ), ale po 4 mozna sie pogubic ;]


--------------------
Zdrowy rozsądek to rzecz, której każdy potrzebuje, mało, kto posiada, a nikt nie wie, że mu brakuje.

Czasami myślę, iż Bóg tworząc człowieka przecenił nieco swoje zdolności.
Go to the top of the page
+Quote Post
dasko
post 24.04.2005, 11:33:40
Post #2





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 9.11.2004

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


To chyba też literówka biggrin.gif

Te inne ogranicznki ciągu znaków zaczynają sie <<< a nie >>>. Cyzli powinieneś mieć tak:
  1. <?php
  2.  
  3. $query = <<<_SQL_
  4. DROP TABLE IF EXISTS users;
  5. CREATE TABLE users(username VARCHAR(50) UNIQUE,
  6. password VARCHAR(50) );
  7. INSERT INTO users VALUES('rasmus', 'zsjdsank');
  8. INSERT INTO users VALUES('zeev', 'zjsdnaka');
  9. SELECT username FROM users;
  10. _SQL_;
  11. ?>


Teraz powinno wszystko działać ;]
Go to the top of the page
+Quote Post
pirat
post 25.04.2005, 11:36:21
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.05.2003
Skąd: Katowice

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


Dzieki kurna jak ktos ma ta ksiazke to na stronie 166 znajdzie na dole to zapytanie i potwierdzi ze to te d*bIlE znowu zmaraly... dobra teraz przynajmniej bledu nie wywala ;] ale nie wykonuje zapytania...;/ ... cos tu nie dziala


--------------------
Zdrowy rozsądek to rzecz, której każdy potrzebuje, mało, kto posiada, a nikt nie wie, że mu brakuje.

Czasami myślę, iż Bóg tworząc człowieka przecenił nieco swoje zdolności.
Go to the top of the page
+Quote Post
Bora
post 25.04.2005, 21:15:03
Post #4





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


foreach (new MySQLiQueryIterator($db, $query) as $result) {

foreach powinno otrzymać tablice :
manual:
Kod
foreach (array_expression as $value)
    statement
Go to the top of the page
+Quote Post
DeyV
post 25.04.2005, 22:39:36
Post #5





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




Bora - albo iterator, który właśnie tablice ma symulować.
Chyba już czas do zapoznania się z tym bardzo ciekawym tematem... (Choćby tu: http://www.sitepoint.com/article/php5-standard-library )


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
Bora
post 25.04.2005, 23:02:48
Post #6





Grupa: Zarejestrowani
Postów: 270
Pomógł: 0
Dołączył: 15.06.2003

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


ehh racja. Aż głupio sie przyznac to takiej pomyłki.
Ciąłe przeskakiwanie między wersjami może zrobić mętlik w głowie smile.gif

$thisquery = $query;

chyba powinno być:
Kod
$this->query = $query;


Ten post edytował Bora 25.04.2005, 23:04:26
Go to the top of the page
+Quote Post
pirat
post 27.04.2005, 22:03:29
Post #7





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 13.05.2003
Skąd: Katowice

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


Cytat(Bora @ 2005-04-26 00:02:48)
ehh racja. Aż głupio sie przyznac to takiej pomyłki.
Ciąłe przeskakiwanie między wersjami może zrobić mętlik w głowie smile.gif

$thisquery = $query;

chyba powinno być:
Kod
$this->query = $query;

dzieki stary, jak sie siedzi iles przy tym samym i w rozpaczy patrzysz CO DO JASNEJ cholery tu nie dziala... to juz literowek nie widac... znalazlem jeszcze jedna ;/ ehhh

$thos->result w lini 45 jaki ja slepy jestem

oka dzieki DZIALA

ps. fajna sprawa te iteratory, podzro


--------------------
Zdrowy rozsądek to rzecz, której każdy potrzebuje, mało, kto posiada, a nikt nie wie, że mu brakuje.

Czasami myślę, iż Bóg tworząc człowieka przecenił nieco swoje zdolności.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 04:07