I am collecting a lot of data-strings from a MySql database. The data has to be used on various different places on my website. So I would like for each string collected from my database to be assigned to its own variable. I don't want to write the same piece of code over and over again. Therefore, I want to use an array in order to collect all the strings and create specific variables in the process. Below is what I have.
$tableName = "fruits";
$variablesArray = array(
"Apple",
"Banana",
"Coconut",
);
foreach($variablesArray as $val) {
$query = "SELECT * FROM {$tableName} WHERE ID = '{$val}'";
$result = mysqli_query($conn, $query) or die('error');
while($data = mysqli_fetch_array($result)) {
For ($n = 0; $n < 1; $n++){
${'$val'} = $data["COLORS"];
}
}
echo ${'$val'};
echo "</br>";
}
In the above, I am using the ID's of the database in the array to collects the data from my database. This echoes "Green", "Yellow", "Brown".
What I would like however, is to make three variables:
The above code doesn't create these. I am unsure of how to use the ${'$val'} in order to achieve this. I have tried creating associative arrays as well, but I was not able to get what I wanted. I was hoping someone here could point me in the right direction. Thanks!
Your problem (not necessarily the only one) lies in ${'$val'};
Single quote strings will not parse variables, so your variable is quite literally called '$val'
Use $$val
${"$val"};
would also be valid as double quote strings do parse variables. In simple cases like this however, it is unnecessary to use the quotes, as $val
is already a string, and unnecessary to use the curly braces, as there are no other parts of the string you want to separate the variable from.