[MSSQL/PHP] SELECT * FROM werkt niet bij MS SQL DB *

Pagina: 1
Acties:
  • 141 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zou het kunnen dat " SELECT * FROM " niet werk bij de combinatie MS SQL en PHP??
Al zou ik dit wel heel vreemd vinden!

Met mijn script krijg ik alleen alle kolommen terug indien ik deze allemaal definieer.


---- Met * ----

Query : SELECT * FROM lip_users WHERE active = 1 ORDER BY lastname,firstname

Resultaat: Notice: Undefined index: username in D:\WWW\index.php on line 89


---- Alle kolommen Gedefinieerd ----

Query: SELECT titleofcourtesy,firstname,lastname,username,username2,active FROM lip_users WHERE active = 1 ORDER BY lastname,firstname

Resultaat: WERKT PRIMA!!!!!


Enig idée wat het probleem kan zijn??
Is er een manier om toch de gehele row te krijgen zonder alle kolommen te noemen?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
edit:
hier stond onzin

[ Voor 81% gewijzigd door faabman op 05-04-2004 12:28 ]

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou het zo niet weten wat er fout kan zijn, laat eens wat meer code zien.

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Lijkt me iets te zijn met je database-indeling. Dus heb je een index gespecificeerd? Of zoiets.. Zet anders je code hier eens naar waar je de tabel mee aanmaakt.

In MySQL zou dat an sich geen problemen opleveren geloof ik, dus misschien dat het iets MSSQL-specifieks is.

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Ik heb een hele site op MSSQL draaien waarbij een aardig gedeelte van de queries select * doet. Ergo je haalt iets anders uit wat niet kosher is, maar zonder code kunnenn we je echt niet helpen hoor :)

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Wordt de notice gegenereerd op de regel van de query?


Het benoemen van de velden die je wilt hebben is trouwens niet meer dan normaal. Select * is eigenlijk alleen gebruikelijk waneer je even snel wat via een console app of in de query analyzer doet. Het enige voordeel voor het gebruik van * (dat het weinig typen is) maakt natuurlijk bij programmeren geen drol uit ;).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Je had trouwens vast en zeker je error al letterlijk in Google ingevuld en hit 1 bekeken?

[google=Notice Undefined index] dus.... heeft geen ruk met MSSQL van doen :)

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik denk niet dat jullie er veel aan hebben, maar dit is de code
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
    // settings DB-connection for private notebook
    define("mssql_dbserver", "KNIP");// SQL server  
    define("mssql_dbusername", "KNIP");// username      
    define("mssql_dbpassword", "KNIP");// password      
    define("mssql_dbname", "LIP");// database

    // get accounts
    $accquery = "SELECT * FROM lip_users WHERE active = 1 ORDER BY lastname,firstname";
    $accresult = mssql_query($accquery) or die (mssql_error());
    while($accrow = mssql_fetch_array($accresult)){

        if((strtolower($SYSTEM_username) ==
            strtolower($accrow['username']))||(strtolower($SYSTEM_username) ==
            strtolower($accrow['username2']))){
            
            $style = "font-weight:bold;";
        }else{
            $style = "";
        }
?>
        <tr>
            <td><li></td>
            <td style="<?=$style?>"><?=$accrow['titleofcourtesy']?> </td>
            <td style="<?=$style?>"><?=$accrow['firstname']?> <?=$accrow['lastname']?></td>
        <tr>

modbreak: login credentials ook maar even verwijderd :z

[ Voor 73% gewijzigd door curry684 op 05-04-2004 13:17 . Reden: [php]-tags de gekste! ]


Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

>> $accrow['username'] zal wel niet bestaan dan, maar dat lijkt me vreemd, omdat 'username' wel in je 'uitgebreide' query voorkomt. Maar het zit dus idd niet in je query, maar in je PHP code (die overigens mooi in code-tags kan ;)). Check het nog maar eens goed, het is vast iets heel simpels wat er fout gaat.

[ Voor 23% gewijzigd door X-Lars op 05-04-2004 13:15 ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Heb je al eens een simpele print_r van $accrow gedaan na de fetch?

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ben er achter. Een vreemd voorbeeld van upper-/ lower case problemen!

In de DB gebruik ik hoofdletters wat dus wel geaccepteerd wordt in de sql query.
De PHP code werkt ook nog zodra ik de kolommen allen definieer.

Bij gebruik van het *-je krijg ik echter wel problemen met de hoofdletters.

Ik ga daarom maar de namen in mijn DB aanpassen!


Allen bedankt!

EDIT:

Stap ik eens over van "_" 's naar hoofdletters bij benoeming van mijn kolommen, gaat het gelijk mis. Ik trek mij terug achter mijn PC vol schaamte. 8)7

[ Voor 20% gewijzigd door Verwijderd op 05-04-2004 13:27 ]


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Da's geen vreemd probleem maar logisch :z

MSSQL is default niet-case-sensitive op de objectnamen (configurable, dat wel), en staat dus toe dat je mixed-case select. Als je een 'named' select doet geeft ie dus jouw 'given names' terug, en als je een wild-select doet met sterretje moet hijzelf de namen bedenken => de originele capped namen dus.

Je kunt ook gewoon aanleren vanzelfsprekend om altijd correct-case te werken, en de volgende keer even zelf print_r doen voordat je een topic opent, dan had je dit ook wel meteen gezien :Y)

Professionele website nodig?


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
curry684 schreef op 05 april 2004 @ 13:33:
Da's geen vreemd probleem maar logisch :z

MSSQL is default niet-case-sensitive op de objectnamen (configurable, dat wel), en staat dus toe dat je mixed-case select. Als je een 'named' select doet geeft ie dus jouw 'given names' terug, en als je een wild-select doet met sterretje moet hijzelf de namen bedenken => de originele capped namen dus.

Je kunt ook gewoon aanleren vanzelfsprekend om altijd correct-case te werken, en de volgende keer even zelf print_r doen voordat je een topic opent, dan had je dit ook wel meteen gezien :Y)
Nog nooit van "print_r" gehoord maar zal het bij deze voortaan gaan gebruiken.

Heb echter niet zomaar een topic geopend, ben eerst flink aan het zoeken geweest met google etc.

Evengoed bedankt voor alle hulp!
Pagina: 1