sql >> Databáze >  >> RDS >> Mysql

SQLSTATE[HY093]:Neplatné číslo parametru:parametr nebyl definován

Zobrazuje se vám tato chyba:

SQLSTATE[HY093]:Neplatné číslo parametru:parametr nebyl definován

je to způsobeno počtem prvků v $values &$matches není totéž nebo $matches obsahuje více než 1 prvek.

Pokud $matches obsahuje více než 1 prvek, vložení se nezdaří, protože v dotazu se odkazuje pouze na 1 název sloupce (hash )

Pokud $values &$matches neobsahují stejný počet prvků, pak vložení také selže, protože dotaz očekává x params, ale přijímá y dat $matches .

Věřím, že také budete muset zajistit, aby hash sloupce měl také jedinečný index.

Vyzkoušejte kód zde :

<?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());

?>

Budete jej muset trochu upravit.

Struktura tabulky, kterou jsem použil, je zde :

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 ;

Kód byl spuštěn na mém serveru XAMPP, který používá PHP 5.3.8 s MySQL 5.5.16.



  1. Jak funguje TRY_CONVERT() na serveru SQL Server

  2. Dva cizí klíče místo primárního

  3. Způsobeno:android.database.sqlite.SQLiteException:žádná taková tabulka:(kód 1) Android

  4. Sloučení datových souborů se Statistica, část 2