Как изменить место значения поля в MySQL, используя PHP? - PullRequest
0 голосов
/ 30 марта 2019

В моей базе данных есть такая таблица:

id  |  name
==================
1     | day sunny
------------------
2     | day windy
------------------
3     | cloudy night
------------------
4     |rainy outside day
-----------------

Как напечатать в программе это имя Солнечный день, ветреный день, облачная ночь (это я должен оставить так, потому что написано в том порядке, в котором я хочу) и дождливый день на улице? Он должен начинаться с заглавной буквы, и я не могу сохранить его в таблицу, просто напечатать в моей программе?

Вот мой код:

$conn=mysqli_connect('localhost','root','','shop') or die ("Fail");
$sql="select *  from products";
$result=mysqli_query($conn, $sql);
   if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
           $names = explode(" ", $row["name"]); 
           echo ucfirst(strtolower($names[1]." ".$names[0]." ".$names[2]."<br>" ));
        }
     } 

Это дает мне почти точно то, что мне нужно, но не 100%. Помоги мне спасибо:)

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

Это должно помочь

     $dbhost = 'localhost:3306';
     $dbuser = 'root';
     $dbpass = '';
     $dbname = 'example';
     $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);

     if(! $conn ) {
        die('Could not connect: ' . mysqli_error());
     }
     echo 'Connected successfully<br>';
     $sql = 'SELECT name FROM example_table';
     $result = mysqli_query($conn, $sql);

     if (mysqli_num_rows($result) > 0) {
        while($row = mysqli_fetch_assoc($result)) {
           $names = explode(" ", $row["name"]);
           echo ucfirst($names[1])." ".$names[0] "<br>";
        }
     } else {
        echo "0 results";
     }
     mysqli_close($conn);
0 голосов
/ 30 марта 2019

Вы можете использовать SUBSTRING_INDEX

SELECT CONCAT(
    SUBSTRING_INDEX(name, ' ', -1 ),
    ' ',
    SUBSTRING_INDEX( name, ' ', 1 )
    ) 
  AS Name FROM table_name

Результат

-------------
 sunny day 
-------------
 windy day
-------------
 cloudy night
-------------

Здесь вы можете перейти, используйте PHP ucfirst, чтобы заглавные буквы были прописными: -

SELECT name,
(
 CASE
     WHEN 
         INSTR(name, 'day') > 0 AND (LENGTH(name) - LENGTH(REPLACE(name, ' ', '')) + 1) < 3
THEN
    CONCAT(
        SUBSTRING_INDEX(name, ' ', -1 ),
        ' ',
        SUBSTRING_INDEX(name, ' ', 1 )
    )
WHEN
    INSTR(name, 'day') > 0 AND (LENGTH(name) - LENGTH(REPLACE(name, ' ', '')) + 1) > 2
THEN
    CONCAT(
        CONCAT(SUBSTRING_INDEX(name, ' ', 1),' ','day'),
        ' ',
        REPLACE(SUBSTRING_INDEX(name, ' ', -2),'day','')
    )
ELSE 
    name
END) AS Name
FROM tablename

Результат: -

-----------
 sunny day
-----------
 windy day
-----------
 cloudy night
-----------
 rainy day outside
-----------

Попробуйте выполнить внутри PHP цикла while: -

    if ($result->num_rows > 0) {
    // output data of each row
     while($row = $result->fetch_assoc()) {
        //$rows[] = ucfirst($row['Name']);
        echo ucfirst($row['Name']);echo '<br/>';
     }
   }

Полный код PHP: -

$conn = mysqli_connect('localhost','root','123123','stackoverflow') or die ("Fail");
$sql  = "SELECT name,
(
 CASE
     WHEN 
         INSTR(name, 'day') > 0 AND (LENGTH(name) - LENGTH(REPLACE(name, ' ', '')) + 1) < 3
 THEN
    CONCAT(
        SUBSTRING_INDEX(name, ' ', -1 ),
        ' ',
        SUBSTRING_INDEX(name, ' ', 1 )
    )
WHEN
    INSTR(name, 'day') > 0 AND (LENGTH(name) - LENGTH(REPLACE(name, ' ', '')) + 1) > 2
THEN
    CONCAT(
        CONCAT(SUBSTRING_INDEX(name, ' ', 1),' ','day'),
        ' ',
        REPLACE(SUBSTRING_INDEX(name, ' ', -2),'day','')
    )
ELSE 
    name
END) AS Name
FROM tablename";

$result = $conn->query($sql);
$rows   = array();

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $rows[] = ucfirst($row['Name']);
    }
}

echo '<pre>';
print_r($rows);

Выход: -

Array
(
  [0] => Sunny day
  [1] => Windy day
  [2] => Cloudy night
  [3] => Rainy day outside 
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...