Cara menggunakan ntu mysql

mungkin skema yang Anda maksudkan seperti ini:

Code:

CREATE TABLE IF NOT EXISTS `point` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`id_challange` int(11) NOT NULL,
`point` varchar(255) NOT NULL
);

INSERT INTO `point` (`id`, `name`, `id_challange`, `point`) VALUES
('1', 'Budi', '1', '50'),
('2', 'Joko', '1', '55'),
('3', 'Budi', '2', '30'),
('4', 'Joko', '2', '35'),
('5', 'Budi', '3', '70');


lalu Anda ingin columnName bernilai numeric, maka procedure-nya seperti ini:

Code:

SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(`id_challange` = ''',
`id_challange`,
''', point, NULL)) AS ',
CONCAT('`',`id_challange`,'`')
)
) INTO @sql
FROM point;

SET @sql = CONCAT('SELECT id
, name
, ', @sql, '
FROM point
GROUP BY name');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;


dan hasilnya, seperti ini sqlfiddle

lalu untuk membuat procedure di MySQL, Anda tinggal eksekusi code ini:

Code:

DROP PROCEDURE IF EXISTS `point_proc`;
DELIMITER //
CREATE DEFINER=`user`@`%` PROCEDURE `point_proc`()
BEGIN
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(`id_challange` = ''',
`id_challange`,
''', point, NULL)) AS ',
CONCAT('`',`id_challange`,'`')
)
) INTO @sql
FROM point;

SET @sql = CONCAT('SELECT id
, name
, ', @sql, '
FROM point
GROUP BY name');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
DELIMITER ;


maka masalah Anda akan teratasi..
Cara menggunakan ntu mysql

upss..
ini cara panggil di php..

Code:

$mysqli = new mysqli("localhost", "user", "pass");
if(!$mysqli) die('Could not connect: ' . mysql_error());
mysqli_select_db($mysqli, "dbname");
if(!$mysqli) die('Could not connect to DB: ' . mysql_error());

$result = $mysqli->query("CALL point_proc()");
if(!$result) die("CALL failed: (" . $mysqli->errno . ") " . $mysqli->error);
$rows = [];
if($result->num_rows > 0)
{
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
$sid = $row["id"];
$name = $row["name"];
$a = $row["1"];
$b = $row["2"];
$c = $row["3"];
//atau
$rows[] = $row;
}
print_r($rows);//ini hasilnya
}
else {
echo "no row";
}

Saya telah menghapus dan menginstal OSX 10.11 El Capitan dan saya telah mengikuti tutorial ini untuk mendapatkan MySQL dan menjalankan OS X baru. Langkah pertama adalah mengunduh MySQL Untuk Mac OS X 10.9 (x86, 64-bit) ), DMG Archive (berfungsi pada 10.11, mereka merekomendasikan dalam tutorial). Ketika saya selesai menginstal MySQL, saya mendapat pesan yang mengatakan bahwa:

2015-10-25T02:10:54.549219Z 1 [Note] A temporary password is generated for [email protected]: R>gFySuiu23U

If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.

Itu aneh, saya belum pernah melihat pesan seperti itu. Setelah itu, saya memulai MySQL melalui Panel Preferensi dan kemudian menggunakan perintah /usr/local/mysql/bin/mysql -v pada terminal untuk langkah lain. Saya mendapat pesan kesalahan yang mengatakan bahwa: 

ERROR 1045 (28000): Access denied for user 'cheetah'@'localhost' (using password: NO)

Saya juga mencoba mengakses database melalui Sequel Pro menggunakan root sebagai nama pengguna dan kata sandi kosong, saya mendapat akses pesan ditolak yang mengatakan bahwa: 

Unable to connect to Host 127.0.0.1 because access was denied.

Double-check your username and password and ensure that access from your current location is permitted.

MySQL said: Access denied for user 'root'@'localhost' (using password: NO)

Oke, saya juga mencoba ini lagi menggunakan root sebagai nama pengguna tetapi 'R> gFySuiu23U' sebagai kata sandi (yang dihasilkan dari MySQL). Saya mendapat pesan gagal koneksi yang mengatakan bahwa:

Unable to connect to Host 127.0.0.1, or the request timed out.

Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).

MySQL said: Your password has expired. To log in you must change it using a client that supports expired passwords.

Bagaimana saya bisa menyelesaikan masalah ini? Saya ingat bahwa MySQL tidak pernah secara otomatis membuat kata sandi sementara seperti ini, bukan?

Inilah yang bekerja untuk saya pada OS X Yosemite yang menjalankan MySql v5.7 (diinstal dari .dmg).

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

(Masukkan kata sandi sementara yang dihasilkan oleh penginstal.)

Ini membawa Anda ke mode sandbox dan mysql> Prompt. Kemudian atur kata sandi root yang diinginkan dengan SET PASSWORD :

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mySuperSecretPassword');

Sekarang setelah kata sandi yang dihasilkan MySQL kedaluwarsa, masalahnya berkurang untuk membuat kata sandi ini berfungsi lagi (1) atau menghasilkan yang baru (2). Ini dapat dicapai dengan menjalankan MySQL dengan opsi skip-grant-tables yang membuatnya mengabaikan hak akses:

  1. Hentikan server MySQL Anda.

  2. Tambahkan di bawah ini di akhir bagian [mysqld] dari file my.cnf dan simpan.

    skip-grant-tables

  3. Mulai server MySQL.

  4. Di terminal, ketik

    mysql -u root -p

untuk masuk ke perintah MySQL Prompt.

  1. Di Prompt perintah, ketik

    USE mysql;

untuk masuk ke database mysql di mana ia menyimpan pengguna basis data.

  1. Mengetik 

    UPDATE user SET password_expired = 'N' WHERE User = 'root';

untuk memberi tahu MySQL kata sandi tidak kedaluwarsa (1) atau 

UPDATE user SET authentication_string = PASSWORD('YourNewPassword'), password_expired = 'N' WHERE User = 'root';

untuk menetapkan kata sandi baru YourNewPassword Anda untuk di-root (2).

Melakukan langkah-langkah ini di bawah OSX 10.11 El Capitan dan MySQL 5.7.X, harus melakukan trik.

Mengingat Anda sudah menginstal MySQL maka ..

Buka jendela terminal dan ketik:

  1. Sudo /usr/local/mysql/support-files/mysql.server berhenti
  2. Sudo mysqld_safe --skip-grant-tables

Karena perintah yang ditembakkan pada langkah 2 akan berada dalam status sedang berjalan, Anda perlu membuka jendela terminal lain dan kemudian ketik:

  1. mysql -u root -p
  2. UPDATE mysql.user SET password_expired = 'N', authentication_string = PASSWORD ('') WHERE User = 'root';
  3. berhenti;
  4. Sudo /usr/local/mysql/support-files/mysql.server restart

Penting : pada langkah 2 Anda harus mengganti kata sandi Anda.

Semoga itu akan wajan untuk Anda.

Kata sandi MySQL kedaluwarsa

Mengatur ulang kata sandi akan menyelesaikan masalah sementara, dari MySQL 5.7.4 ke 5.7.10 (saya pikir untuk mendorong keamanan yang lebih baik) nilai default untuk variabel default_password_lifetime adalah 360 (sekitar setahun). Untuk versi tersebut, jika Anda membuat tidak ada perubahan pada variabel ini (atau ke akun pengguna perorangan) semua kata sandi pengguna akan kedaluwarsa setelah 360 hari.

Biasanya, dari skrip Anda mungkin mendapatkan pesan: "Kata sandi Anda telah kedaluwarsa. Untuk masuk Anda harus mengubahnya menggunakan klien yang mendukung kata sandi yang kedaluwarsa."

Jadi, untuk mencegah kedaluwarsa kata sandi otomatis, masuk sebagai root (mysql -u root -p), lalu, untuk klien yang terhubung secara otomatis ke server (mis. Skrip.) Ubah pengaturan kedaluwarsa kata sandi untuk klien-klien tersebut:

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;

atau Anda dapat menonaktifkan kedaluwarsa kata sandi otomatis untuk semua pengguna:

SET GLOBAL default_password_lifetime = 0;

Tautan:

MySQL: Kedaluwarsa Kata Sandi dan Mode Kotak Pasir
MySQL: Kebijakan Kedaluwarsa Kata Sandi
Kebijakan kedaluwarsa kata sandi di MySQL Server 5.7

Saya menjalankan macOS Sierra (10.12.3) dan saya menginstal mysql-5.7.17-macos10.12-x86_64.dmg.

Jawaban dari @lesley bekerja untuk saya dengan pengecualian bahwa saya perlu menambahkan ./ untuk memastikan saya memanggil biner mysql di direktori kerja saya saat ini. Di situlah paket tersebut diinstal. 

Jika Anda cd ke /usr/local/mysql/bin dan menjalankan mysql -u root -p --connect-expired-password, Anda bisa menerima kesalahan berikut. 

mysql: unknown option '--connect-expired-password'

Aku melakukannya. Karena hanya menjalankan mysql tanpa menyediakan jalur, disebut versi klien MariaDB yang diinstal sebelumnya.

Jadi untuk memastikan Anda menjalankan biner yang benar, Anda dapat melakukannya

memberikan jalan absolut 

/usr/local/mysql/bin/mysql -u root -p --connect-expired-password

atau jalur relatif setelah mengubah direktori

cd /usr/local/mysql/bin
./mysql -u root -p --connect-expired-password

Kedua cara harus bekerja. Setelah Anda terhubung ke klien, instruksinya sama seperti di atas dari @lesley.

Masukkan kata sandi sementara Anda yang dihasilkan oleh penginstal dan atur kata sandi baru Anda. 

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yourNewPassword'); 

Saya menghadapi masalah yang sama. Saya mengikuti panduan proses instalasi dari https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_HowTo.html dan mengunduh arsip DMG dan menginstal MySQL pada MAC OS X 10.12.2.

Akhirnya dieksekusi perintah berikut di Terminal baru.

cd /usr/local/mysql/bin

./mysql -u root -p --connect-expired-password

Itu berhasil.

Jawaban 7 berfungsi untuk saya: El capitan, MySQL diinstal dari dmg dan kata sandi yang di-autogenerasi, tetapi pastikan untuk cd ke /usr/local/bin/mysql sebelum memasukkan ./mysql -root -p Jelas, tapi saya tidak pertama kali.

Sekarang untuk menemukan di mana semua basis data dan tabel saya dan bagaimana menautkannya.

Untuk Mysql 5.7 saya gunakan 

Shell $> Sudo grep 'kata sandi sementara' /var/log/mysqld.log

Yang ini sangat membantu saya:

Sebagaimana ditentukan dalam tautan ini: https://www.variphy.com/kb/mac-os-x-reset-mysql-root-password

Lakukan semua langkah kecuali menjalankan

    UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root';

Menjalankan 

    UPDATE mysql.user
    SET authentication_string = PASSWORD('MyNewPass'), password_expired = 'N'
    WHERE User = 'root' AND Host = 'localhost';

Dan kemudian jalankan PRIVILEGUS FLUSH;

Cara lain untuk mengatasi masalah ini adalah dengan menggunakan versi MySQL yang lebih lama.

Saya telah menghapus MySQL version 5.7.9 untuk Mac OS X 10.9 (x86, 64-bit), DMG Archive dan kemudian menginstal versi yang lebih lama, MySQL version 5.6.7 untuk Mac OS X 10.9 (x86, 64-bit), DMG Archive. Masalah ini terpecahkan. Kata sandi autogenerated yang diberikan sebelum menyelesaikan instalasi versi yang lebih lama ini hilang dan saya akhirnya dapat mengakses database menggunakan root sebagai nama pengguna dan kata sandi kosong. Semuanya bekerja seperti pesona!

Saya mengatasi masalah ini dengan menjalankan 'mysql -u root -p --connect-expired-password' Kemudian masukkan kata sandi gen-otomatis yang kadaluwarsa dari mysql. Akhirnya masuk. Dipilih mysql db dengan 'use mysql' dan kemudian perbarui pengguna 'root' pw dengan 'ALTER USER 'root'@'localhost' IDENTIFIED BY 'your new password'

Saya memasang tampilan buatan, dan saya memiliki pesan kesalahan yang sama sampai saya perhatikan peringatan ini:

Kami telah menginstal basis data MySQL Anda tanpa kata sandi root. Untuk mengamankannya jalankan: instalasi mysql_secure_installation

Untuk menghubungkan jalankan: mysql -uroot

Untuk memulai launchs mysql sekarang dan restart saat login: layanan minuman memulai mysql

Atau, jika Anda tidak ingin/memerlukan layanan latar belakang, Anda dapat menjalankan:. mysql.server mulai

Menginstal MySQL secara manual dengan mengunduh paket untuk pertama kalinya menghasilkan kata sandi default untuk root. Salin dan simpan itu. Jika tidak dilakukan entah bagaimana pada instalasi ulang berturut-turut itu tidak menunjukkan kata sandi itu. 

Dengan demikian Anda tidak dapat masuk ke root . Lakukan yang berikut:

  1. Temukan entri terkait mysql dari sistem Sudo find / -name mysql
  2. Hapus semua entri terkait mysql dengan melakukan rm -rf <mysql_entries_above>
  3. Unduh mysql-server terbaru dan install.
  4. Anda akan dijanjikan dengan kata sandi default yang harus Anda salin.
  5. Jalankan mysql_secure_installation dan rekatkan kata sandi itu ketika ditanya root.
  6. Selanjutnya ikuti langkah-langkah dan ubah kata sandi admin saat diminta.