gpt4 book ai didi

php - SQLSTATE [HY093] : Invalid parameter number: parameter was not defined

转载 作者:行者123 更新时间:2023-12-03 08:36:47 25 4
gpt4 key购买 nike

// BUILD VALUES
$count = count($matches);
for($i = 0; $i < $count; ++$i) {
$values[] = '(?)';
}
// INSERT INTO DATABASE
$q = $this -> dbc -> prepare("INSERT INTO hashes (hash) VALUES " . implode(', ', $values) . " ON DUPLICATE KEY UPDATE hash = hash");
$q -> execute($matches);

上面的代码因以下错误而失败

SQLSTATE [HY093]:无效的参数号:未定义参数

虽然在执行之前调用 count($matches) == count($values)时?

这里发生了什么?

最佳答案

您收到的此错误:

SQLSTATE[HY093]: Invalid parameter number: parameter was not defined



是因为 $values$matches中的元素数不相同,或者 $matches包含不止1个元素。

如果 $matches包含多个元素,则插入将失败,因为在查询中仅引用了1个列名( hash)

如果 $values$matches不包含相同数量的元素,则插入也将失败,因为查询期望x参数,但它正在接收y数据 $matches

我相信您还需要确保列哈希也具有唯一索引。

尝试代码 here:
<?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());

?>

您将需要对其稍作调整。

我使用的表结构是 here:
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。

我希望这有帮助。

关于php - SQLSTATE [HY093] : Invalid parameter number: parameter was not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65811322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com