У меня есть таблица базы данных под названием test_config с двумя столбцами под названием "Имя и значение". Я хотел бы перебрать каждую строку и создать $variables из имени и значения, например $Name = "Value";, которое затем можно использовать в файле php. В первой строке есть abc в столбце Name и 123 в столбце Value, поэтому созданный vaiable будет $abc = 123;

Это можно сделать.

Спасибо.

-1
monkeykong 6 Окт 2016 в 16:57

5 ответов

Лучший ответ

Итак, немного поработав, я нашел решение.


try {
    $conn = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME."", DB_USERNAME, DB_PASSWORD);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare("SELECT Name, Value FROM test_config");
    $stmt->setFetchMode(PDO::FETCH_KEY_PAIR);
    $stmt->execute(); 
    $array = $stmt->fetchAll();
    //var_dump($array);
    extract($array);
    }
catch(PDOException $e)
    {
    echo "Connection failed: " . $e->getMessage();
    }
$conn = null;   

Затем я тестирую это с помощью

echo "The first row variable  is $abc</br>";
0
monkeykong 6 Окт 2016 в 15:48

Внутри вашего цикла, где вы перебираете строки базы данных, вы можете использовать extract (), чтобы установить столбцы как переменные с их значениями.

while ($databaseROW = mysql_fetch_assoc($result))
{
    extract($databaseROW);

    //rest of code from here down can now use variables
    //you have columns Name & Value 
    //so now $Name & $Value variables are available
    //$Name = "value from column Name for this $databaseROW";
    //$Value = "value from column Value for this $databaseROW";

}
0
dynabaul 6 Окт 2016 в 14:26

Предположим, у вас есть такой массив из базы данных -

$foo = array('first' =>  '1st',
             'second' => '2nd',
             'third' =>  '3rd');

Вы хотите выводить как -

$first = '1st';
$second = '2nd';
$third = '3rd';

Вы можете использовать функцию extract()

<?php extract($foo); ?>

http://ua.php.net/extract

Справка - Создание новых переменных из ключей массива в PHP

0
Community 23 Май 2017 в 12:16

Я читал, что вы хотели создать переменную для каждого имени. На вашем месте я бы поместил это в массив, как сказал Джерун. Этого можно добиться, выполнив следующие действия:

    $host = "localhost";
    $user = "username";
    $pass = "password";
    $dbname = "myDB";

    $conn = new mysqli($host, $user, $pass, $dbname);

    if ($conn->connect_error) {
        die("ERROR: " . $conn->connect_error);
    } 

    $query = "SELECT name FROM table";
    $name = $conn->query($query);

    $query2 = "SELECT value FROM table";
    $value = $conn->query($query2);
0
B. Hulshof 6 Окт 2016 в 14:13

Это так, но без названия ваших переменных

$arr = array();
while($row = $query->fetch_array()){
    $arr['name'=>$row['name'], 'value'=>$row['value']];
}
1
Алмат Ыбрай 7 Окт 2016 в 06:45