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

SQLSTATE[HY093]:Nomor parameter tidak valid:parameter tidak ditentukan

Kesalahan yang Anda terima ini:

SQLSTATE[HY093]:Nomor parameter tidak valid:parameter tidak ditentukan

adalah karena jumlah elemen dalam $values &$matches tidak sama atau $matches berisi lebih dari 1 elemen.

Jika $matches mengandung lebih dari 1 elemen, maka penyisipan akan gagal, karena hanya ada 1 nama kolom yang dirujuk dalam kueri (hash )

Jika $values &$matches tidak mengandung jumlah elemen yang sama maka penyisipan juga akan gagal, karena kueri mengharapkan x params tetapi menerima data y $matches .

Saya yakin Anda juga perlu memastikan hash kolom memiliki indeks unik juga.

Coba kode di sini :

<?php

/*** mysql hostname ***/
$hostname = 'localhost';

/*** mysql username ***/
$username = 'root';

/*** mysql password ***/
$password = '';

try {
    $dbh = new PDO("mysql:host=$hostname;dbname=test", $username, $password);
    /*** echo a message saying we have connected ***/
    echo 'Connected to database';
    }
catch(PDOException $e)
    {
    echo $e->getMessage();
    }

  
$matches = array('1');
$count = count($matches);
for($i = 0; $i < $count; ++$i) {
    $values[] = '?';
}

// INSERT INTO DATABASE
$sql = "INSERT INTO hashes (hash) VALUES (" . implode(', ', $values) . ") ON DUPLICATE KEY UPDATE hash='hash'";
$stmt = $dbh->prepare($sql);
$data = $stmt->execute($matches);

//Error reporting if something went wrong...
var_dump($dbh->errorInfo());

?>

Anda perlu menyesuaikannya sedikit.

Struktur tabel yang saya gunakan adalah di sini :

CREATE TABLE IF NOT EXISTS `hashes` (
  `hashid` int(11) NOT NULL AUTO_INCREMENT,
  `hash` varchar(250) NOT NULL,
  PRIMARY KEY (`hashid`),
  UNIQUE KEY `hash1` (`hash`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Kode dijalankan di Server XAMPP saya yang menggunakan PHP 5.3.8 dengan MySQL 5.5.16.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kolom Tabel Ubah MySQL

  2. Kapan saya harus menggunakan indeks komposit?

  3. mengimpor CSV ke phpmyadmin

  4. TIMEDIFF() Contoh – MySQL

  5. Nilai yang dipisahkan koma dalam klausa MySQL IN