Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL dan PHP T_Variable Tak Terduga

BERHENTI

Memasukkan ke dalam database langsung dari pos selalu merupakan ide yang buruk. Inilah alasan mengapa PHP saat ini terjebak dengan kutipan ajaib yang sangat tidak intuitif.

Anda setidaknya harus menggunakan mysql_real_escape_string() untuk menghindari data Anda. Misalnya:

$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());

$query = "INSERT INTO users VALUES (
    '" . mysql_real_escape_string($_POST["username"]) . "',
    '" . mysql_real_escape_string($_POST["sha_pass_hash"]) . "',
    '" . mysql_real_escape_string($_POST["email"]) . "',
    '2'
)";

mysql_query($query);

Alasan Anda harus melakukan ini adalah berbasis keamanan. Misalnya jika beberapa orang jahat menyetel bidang nama pengguna ke '); DROP TABLE users; tanpa terlebih dahulu keluar dari data Anda. Anda akhirnya akan menjalankan kueri berikut secara membabi buta:

INSERT INTO users VALUES (''); DROP TABLE users;

Yang tentu saja tidak akan berakhir dengan baik untuk lamaran Anda.

Ini adalah minimum seharusnya Anda lakukan.

Pada kenyataannya Anda harus benar-benar pindah ke MySQLi Yang merupakan antarmuka MySQL yang jauh lebih modern. Berikut ini contohnya

$mysqli = new mysqli('mysql_host', 'mysql_user', 'mysql_password', 'mysql_database');

$query = "INSERT INTO users VALUES (
    '" . $mysqli->real_escape_string($_POST["username"]) . "',
    '" . $mysqli->real_escape_string($_POST["sha_pass_hash"]) . "',
    '" . $mysqli->real_escape_string($_POST["email"]) . "',
    '2'
)";

$mysqli->query($query);

Anda bahkan dapat menggunakan MySQL dalam gaya prosedural. Jadi, jika pemrograman berorientasi objek belum ada dalam jangkauan Anda, Anda tidak akan memiliki masalah dengan MySQLi.

Semoga membantu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Pilih Entri Acak, tetapi Bobot Menuju Entri Tertentu

  2. Kemiringan MySQL (tren) bidang tunggal (garis paling sesuai)

  3. Kesalahan fatal:Panggilan ke fungsi yang tidak ditentukan:MDB2_Driver_MYSQL::getAll()

  4. sql hapus semua baris yang lebih lama dari 30 hari

  5. Sisipkan massal atau perbarui dengan Hibernate?