Mysql
 sql >> база данни >  >> RDS >> Mysql

SQLSTATE[HY093]:Невалиден номер на параметър:параметърът не е дефиниран

Тази грешка, която получавате:

SQLSTATE[HY093]:Невалиден номер на параметър:параметърът не е дефиниран

е защото броят на елементите в $values &$matches не е същото или $matches съдържа повече от 1 елемент.

Ако $matches съдържа повече от 1 елемент, тогава вмъкването ще се провали, защото има само 1 име на колона, посочено в заявката (hash )

Ако $values &$matches не съдържат същия брой елементи, тогава вмъкването също ще се провали, поради заявката, която очаква x params, но получава y данни $matches .

Вярвам, че ще трябва също да се уверите, че хешът на колоната също има уникален индекс.

Опитайте кода тук :

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

?>

Ще трябва да го адаптирате малко.

Структурата на таблицата, която използвах, е тук :

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 ;

Кодът беше стартиран на моя XAMPP сървър, който използва PHP 5.3.8 с 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. Как да коригирам MySQL грешка 1064

  2. Замяна в синтаксис на заявка

  3. Създаване на уеб приложение от нулата с помощта на Python Flask и MySQL:Част 4

  4. Как да изпълня UPSERT, така че да мога да използвам както нови, така и стари стойности в частта за актуализиране

  5. Как мога да преглеждам MySQL резултатен набор повече от веднъж, използвайки функциите mysql_*?