Re: Any method to get primary key matching a given value ?
Karl DeSaulniers <[email protected]> Mon, 10 Oct 2016 20:01:25 -0500
| Newsgroups | gmane.comp.php.database |
|---|---|
| Message-ID | <[email protected]> |
You may be correct. Admittedly, I am stabbing in the dark here. I work = on MySQL, not SQLite. Just good at key word searches. :) This link seems to be promising. http://www.sqlite.org/c3ref/table_column_metadata.html Sorry I can't help more. Best, Karl DeSaulniers Design Drumm http://designdrumm.com > On Oct 10, 2016, at 7:48 PM, Ratin <[email protected]> wrote: >=20 > Hi Karl, Isnt it the same ? I am doing the check if ($result['pk'] =3D=3D= 1), > and you are doing if ($result['pk'] !=3D=3D null). I wanted to make = sure I > dont get false positives, what if $result['pk'] is set to zero, in = your > case it will be a match but thats probably not what we want, cuz the = pk > field is not set to 1.. >=20 > Regards, > Ratin >=20 >=20 > On Mon, Oct 10, 2016 at 5:38 PM, Karl DeSaulniers = <[email protected]> > wrote: >=20 >> Hi Ratin, >> I "think" you can just do this and not have to store the table name. >> However, I have no way of testing this. You will have to test on your = end. >>=20 >> while ($result =3D $query->fetchArray()) { >> if ($result['pk'] !=3D=3D null) { >> $primary_key=3D$result['pk']; >> } >> } >>=20 >> Best, >>=20 >> Karl DeSaulniers >> Design Drumm >> http://designdrumm.com <http://designdrumm.com/> >>=20 >>=20 >>=20 >>=20 >>> On Oct 10, 2016, at 7:12 PM, Ratin <[email protected]> wrote: >>>=20 >>> Sorry about my late reply but this was my function - a bit of a hack = but >> works properly on my version of php-sqlite3: >>>=20 >>>=20 >>> function get_primary_key_name($table) >>> { >>> $primary_key=3D''; >>> $db =3D new MyDB(); >>> if(!$db) >>> { >>> echo $db->lastErrorMsg(); >>> } >>> else >>> { >>> $qstr =3D "PRAGMA table_info(" . $table . ");" ; >>> $query =3D $db->query($qstr); >>> while ($result =3D $query->fetchArray()) >>> { >>> if ($result['pk'] =3D=3D 1) >>> { >>> $primary_key=3D$result['name']; >>> } >>> } >>> } >>> $db->close(); >>> return $primary_key; >>> } >>>=20 >>>=20 >>> On Sat, Aug 20, 2016 at 3:35 AM, Karl DeSaulniers = <[email protected] >> <mailto:[email protected]>> wrote: >>> This may also shed some light for you. >>> The accepted answer and possibly the one below it if you are on .NET >>>=20 >>> http://stackoverflow.com/questions/763516/information- >> schema-columns-on-sqlite <http://stackoverflow.com/ >> questions/763516/information-schema-columns-on-sqlite> >>>=20 >>> HTH, >>>=20 >>> Best, >>>=20 >>> Karl DeSaulniers >>> Design Drumm >>> http://designdrumm.com <http://designdrumm.com/> >>>=20 >>>=20 >>>=20 >>>=20 >>>> On Aug 20, 2016, at 5:30 AM, Karl DeSaulniers <[email protected] >> <mailto:[email protected]>> wrote: >>>>=20 >>>> Hey Ratin, >>>> Have you looked into the table column named 'pk' inside table_info? >>>> That is where a column is indicated to be a primary key or not. >>>>=20 >>>> Best, >>>>=20 >>>> Karl DeSaulniers >>>> Design Drumm >>>> http://designdrumm.com <http://designdrumm.com/> < >> http://designdrumm.com/ <http://designdrumm.com/>> >>>>=20 >>>>=20 >>>>=20 >>>>=20 >>>>> On Aug 18, 2016, at 6:51 PM, Ratin <[email protected] <mailto: >> [email protected]>> wrote: >>>>>=20 >>>>> Hi Karl, Thanks a lot for your response, I think = INFORMATION_SCHEMA >> is not available for sqlite database. I had to built up the whole = query >> with php using PRAGMA table_info(tablename), looking at the pk entry, = when >> its 1, get the column name, and then update the sql statement based = on >> that. A bit of work, wouldve been much simpler if a method was = provided, >> but oh well .. >>>>>=20 >>>>> Thanks again >>>>>=20 >>>>> Ratin >>>>>=20 >>>>> On Thu, Aug 18, 2016 at 2:53 PM, Karl DeSaulniers < >> [email protected] <mailto:[email protected]> <mailto: >> [email protected] <mailto:[email protected]>>> wrote: >>>>> Hi Ratin, >>>>> Going to take a stab at this one. >>>>> Have you looked into INFORMATION_SCHEMA.COLUMNS for your query? >>>>> Might be where you want to look for what you are trying. >>>>> Sorry can't help more. >>>>>=20 >>>>> Best, >>>>>=20 >>>>> Karl DeSaulniers >>>>> Design Drumm >>>>> http://designdrumm.com <http://designdrumm.com/> < >> http://designdrumm.com/ <http://designdrumm.com/>> >>>>>=20 >>>>>=20 >>>>>=20 >>>>>=20 >>>>>> On Aug 18, 2016, at 1:27 PM, Ratin <[email protected] <mailto: >> [email protected]> <mailto:[email protected] = <mailto:[email protected]>>> >> wrote: >>>>>>=20 >>>>>> I'm writing the generic get that works on different tables having >> different >>>>>> primary keys but the argument of get is always the primary key , >> i.e. get >>>>>> request is - >>>>>>=20 >>>>>> get (column name, value) >>>>>>=20 >>>>>> the value is always the primary key value. >>>>>>=20 >>>>>> It looks like it would be a pretty standard method but I cant = find a >> method >>>>>> like that. Anybody have any clue? >>>>>>=20 >>>>>> Thanks >>>>>>=20 >>>>>> Ratin >>>>>=20 >>>>>=20 >>>>> -- >>>>> PHP Database Mailing List (http://www.php.net/ = <http://www.php.net/> >> <http://www.php.net/ <http://www.php.net/>>) >>>>> To unsubscribe, visit: http://www.php.net/unsub.php < >> http://www.php.net/unsub.php> <http://www.php.net/unsub.php < >> http://www.php.net/unsub.php>> >>>>>=20 >>>>>=20 >>>>=20 >>>=20 >>>=20 >>> -- >>> PHP Database Mailing List (http://www.php.net/ = <http://www.php.net/>) >>> To unsubscribe, visit: http://www.php.net/unsub.php < >> http://www.php.net/unsub.php> >>>=20 >>>=20 >>=20 >>=20 -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php