WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Hämta specifika värden från MySQL (https://www.wn.se/forum/showthread.php?t=1069556)

niklas_SWED 2018-10-06 12:26

Hämta specifika värden från MySQL
 
Vet inte om jag är trött eller vad, men kommer inte på en lösning. Nån som kan hjälpa till?

Min fråga ser ut så här mot databasen:

SELECT name, value FROM settings WHERE section = 'company' AND id = $company_id

name innehåller exempelvis "phone" eller "address", och value innehåller resultat.

Hur kan jag sen få ut detta med php?

$company_phone = $phone
$company_address = $address

Anledning är att jag endast vill köra 1 fråga mot databasen istället för att köra flera stycken.

Kimppa 2018-10-06 17:04

Jag förstår inte varför "name" innehåller "phone", eller "address".

Hakade upp mig på det så fastnade en stund.

En "switch"-sats kanske och så samlar du all data i en array, där huvudnycklarna är företagets id.

$array[$company_id]['phone'] = $phone
$array[$company_id]['address'] = $address

Då kan du hämta alla samtidigt och bara sortera upp de i arrays.

Mvh,
Kim

fabian 2018-10-06 20:13

Citat:

Ursprungligen postat av Kimppa (Inlägg 20527280)
Jag förstår inte varför "name" innehåller "phone", eller "address".

För att han sparar ett okänt antal attribut till företagen i databasen.

Det han kallar "name" är ju en nyckel
Det han kallar "value" är värdet för respektive nyckel

Det är väl en helt okej lösning. Här är hur man skulle kunna lösa det i PHP för att uppnå det du vill:

PHP-kod:

<?php
//Simulerar ditt output från mysql
$output_from_mysql = [
    [
'name' => 'phone''value' => '031-123123'],
    [
'name' => 'city''value' => 'Göteborg']
];

//Skapar en array som heter $metadata
$metadata = array();

//Lägger alla raderna vi fick från mysql i $metadata;
foreach($output_from_mysql as $row){
    
//Nyckeln är ditt "name", värdet är ditt "value"
    
$metadata[$row['name']] = $row['value'];
}

/*
Extrahera från metadata med prefixet "company",
nu finns dina variabler tillgängliga som t.ex. $company_[name]
där [name] är vad dom heter i din databas
*/
extract($metadataEXTR_PREFIX_ALL"company");

// var_dumpa $company_phone så att du ser hur det funkar
var_dump($company_phone);


niklas_SWED 2018-10-07 10:01

Tusen tack!

Fabians svar fungerade utmärkt för mig och koden blev:

PHP-kod:

$output_from_mysql mysqli_fetch_all ($resultMYSQLI_ASSOC);

$metadata = array();

foreach(
$output_from_mysql as $row){
    
$metadata[$row['name']] = $row['value'];
}

extract($metadataEXTR_PREFIX_ALL"company"); 



Alla tider är GMT +2. Klockan är nu 08:49.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson