Re: [PHP-DB] Any method to get primary key matching a given value ?

[email protected] (Karl DeSaulniers) Mon, 10 Oct 2016 20:01:25 -0500
Newsgroups php.db
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