Lee Perkins
Lee Perkins

Reputation: 95

PHP automatically create variables based on what is in mysql database

I dont know if this is possible, but am trying to create a php variable using an entry from a mysql database.

For example, lets say I want to create the following variables, but i want to replace google with whatever the company name is in the database.

$google = $row['companyname'];
$google_ticker = $row['ticker'];
$google_holding = $row['holding'];

So if I had a row in my database with the company name as Yahoo, the following would appear instead:

$yahoo = $row['companyname'];
$yahoo_ticker = $row['ticker'];
$yahoo_holding = $row['holding'];

I have tried different variations of the following however I cant get it to work (I know the code below wont work, its just an example of the sort of thing I have tried):

$query = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($query)){
    $$row['companyname'] = $row['companyname'];
    $$row['companyname']_ticker = $row['ticker'];
    $$row['companyname']_holding = $row['holding'];
}

I can get it to work using something similar to the following, however doing it this way means I have to create each variable manually (as far as i know). I am trying to get it to create my variables automatically depending on what company names I have in my database.

$values = [];
$query = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($query)){
    $values[$row['companyname']] = $row;
}

$google = $values['google']['companyname'];
$google_ticker = $values['google']['ticker'];
$google_holding = $values['google']['holding'];

Any ideas on how I can achieve this? Many Thanks

Upvotes: 1

Views: 472

Answers (2)

Marco Santarossa
Marco Santarossa

Reputation: 4066

You can use like this:

${$row['companyname']} = $row['companyname'];

doc

Upvotes: 1

Cagy79
Cagy79

Reputation: 1620

Use a (multidimensional-)Array with KEYS that function as variable names:

$query = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($query)){
    $data[$row['companyname']]['name'] = $row['companyname'];
    $data[$row['companyname']]['ticker'] = $row['ticker'];
    $data[$row['companyname']]['holding'] = $row['holding'];
}

Now you can access the holding variable like this:

echo $data['google']['holding'];

That should get you started...

Succes!

Upvotes: 3

Related Questions