Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> problem z funkcją get_all_rows, get all rows
jason300
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.11.2012

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


Witam mam problem z funkcją .
  1. function get_all_rows ($q) {
  2. global $conn;
  3. $rows=array();
  4. $result = odbc_exec ($conn, $q);
  5. if ($result) {
  6. while ($row = odbc_fetch_array($result))
  7. $rows[]=$row;
  8. odbc_free_result($result);
  9. return $rows;
  10. }
  11. return " " ;
  12. }



Podczas wywołania wyskakuje błąd
specyfikacja to php 5.3.8 mysql 5.5.28 platforma CENTOS 6 mysql odbc connector chyba 5.2.2 z tego co pamiętam.

Warning: odbc_exec() [function.odbc-exec]: SQL error: [unixODBC][MySQL][ODBC 5.2(w) Driver][mysqld-5.5.28]Result consisted of more than one row, SQL state S1000 in SQLExecDirect in /home/struktura/index.php on line 569 gdzie linia 569 to dokładnie $result = odbc_exec ($conn, $q);

Moje pytanie byłoby takie jak miałbym zabezpieczyć się przed tym wywołaniem i co mam zrobić żeby wyświetlało mi wszystkie "rows" a nie pokazywało taki błąd
Od strony użytkownika wygląda to tak że jeśli jakaś osoba ma przypisane kilka wartości ( spółek w tym przypadku to wyświetla się ten błąd a jeśli jest to tylko jedna wartość to wyświetla się poprawnie)

a tutaj przykład wywołania

$q ="select *, unit.id as unit__id, employee.id as employee__id,
position.floor as depfloor, position.filename as depfilename, position.name as depname
from employee
inner join employeeunit on employee.id = employeeunit.employee_id
inner join unit on employeeunit.unit_id = unit.id
left join position on unit.departament = position.id
where concat(lower(trim(employee.lastname)),' ',lower(trim(employee.firstname))) like '".$n."%'
or concat(lower(trim(employee.firstname)),' ',lower(trim(employee.lastname))) like '".$n."%'
or employee.mobile like '%".$n."%'
or employee.telephone like '%".$n."%'";

$q.="group by employee.id order by lastname, firstname limit 100";
$rows=get_all_rows($q);

Ten post edytował jason300 26.11.2012, 12:16:03
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
jason300
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 26.11.2012

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


tak wygląda cała funkcja z zapytaniem nr 1 .
  1. function gs ($id) {
  2. if ($id) {
  3. $q = "select *, estructuredb.getunitroot_company_id(unit.id) as spolka
  4. from employeeunit
  5. left join unit on employeeunit.unit_id = unit.id
  6. where employeeunit.employee_id=$id
  7. order by spolka";
  8. $rows = get_all_rows($q);
  9. return $rows;
  10. } else {return false;}
  11. }


a tak fragment kodu z całym zapytaniem nr 2

  1. $input = $_GET['input'];
  2. $len = strlen($input);
  3. $limit = isset($_GET['limit']) ? (int) $_GET['limit'] : 0;
  4. $res_t = array();
  5. $count = 0;
  6.  
  7. include ('inc.func.php');$conn = dbconnect();
  8. if ($len or 1) {
  9. #$input = mysql_escape_string(trim(strip_tags(($input))));
  10. #$input = iso2cp(mb_strtolower(mb_convert_encoding ($input, "iso-8859-2", "utf-8"), "iso-8859-2"));
  11. $input=iconv("windows-1250","utf-8",$input);
  12. //echo $input; die();
  13. $q0 = "select count(*) as cnt
  14. from employee
  15. inner join employeeunit on employee.id = employeeunit.employee_id
  16. inner join unit on employeeunit.unit_id = unit.id
  17. left join position on unit.departament = position.id
  18. where length(employee.photourlsuffix)>4 limit 1";
  19.  
  20. $res = get_all_rows($q0);
  21. $count = $res[0]['cnt']; //echo "z";die ();
  22. //error_log ($count);
  23. do {
  24. $randlimit = mt_rand(1,$count); //echo ($randlimit);
  25. //error_log($randlimit);
  26. $q = "select *, employee.photourlsuffix as ephoto,unit.name as unit__name, unit.id as unit__id,
  27. estructuredb.getunitroot_company_id(unit.id) as spolka, employee.id as employee__id,
  28. position.floor as depfloor, position.filename as depfilename, position.name as depname
  29. from employee
  30. inner join employeeunit on employee.id = employeeunit.employee_id
  31. inner join unit on employeeunit.unit_id = unit.id
  32. left join position on unit.departament = position.id
  33. where length(employee.photourlsuffix)>4 limit ".$randlimit.",1";
  34.  
  35. // jak wylosuje z niefunkcjonalnej losowac jeszcz eraz
  36. // estructuredb.getunitroot_company_id(unit.id) as spolka
  37.  
  38. //$q.="group by employee.id order by lastname, firstname limit 100";
  39. $res=get_all_rows($q);// print_R($res);
  40. } while ($res[0]['spolka'] <> 2184);
  41. odbc_close($conn);


Ten post edytował jason300 26.11.2012, 15:42:57
Go to the top of the page
+Quote Post

Posty w temacie
- jason300   problem z funkcją get_all_rows   26.11.2012, 12:12:47
- - nospor   Jesteś na 100% pewien że chodzi o to właśnie zapyt...   26.11.2012, 12:21:41
- - jason300   niekoniecznie chodzi o to to jest tylko przykładow...   26.11.2012, 15:16:30
- - nospor   .... To znajdź to zapytanie, które ten błąd generu...   26.11.2012, 15:20:04
- - jason300   no ok dodałbym jeszcze że problem zaczął się pojaw...   26.11.2012, 15:27:52
- - nospor   Ty podaj lepiej to zapytanie. Napisałem ci już jak...   26.11.2012, 15:32:06
- - jason300   super dzięki już mam select *, estructuredb.getu...   26.11.2012, 15:33:54
- - nospor   Podejrzewam, że chodzi o funkcję getunitroot_compa...   26.11.2012, 15:36:33
- - jason300   tak wygląda cała funkcja z zapytaniem nr 1 . [PHP]...   26.11.2012, 15:41:17
- - nospor   o rety.... Napiszę jeszcze raz: Podaj jak wygląda...   26.11.2012, 15:43:27
- - jason300   Dobra tylko takie pytanie jak to znaleźć Wyszukuj...   26.11.2012, 15:52:26
- - nospor   Funkcje SLQ znajdują się w bazie danych a nie na d...   26.11.2012, 15:53:22
- - jason300   no i super o to chodziło wyszukiwanie w zrzucie ba...   26.11.2012, 15:57:11
- - nospor   Tak jak myślałem. Problemem jest o to zapytanie: ...   26.11.2012, 16:33:04
- - jason300   super dziękuję bardzo , jutro sprawdzę mam tylko ...   26.11.2012, 22:08:22
- - nospor   CytatTo totalnie bez sensu zważywszy na to że jest...   27.11.2012, 07:26:34
- - jason300   super to działa przepraszam za głupie pytania już ...   27.11.2012, 09:12:51


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: 8.10.2025 - 05:45