【问题标题】:SQLSTATE[HY093]: Invalid parameter number: parameter was not defined issue [duplicate]SQLSTATE [HY093]:参数号无效:参数未定义问题[重复]
【发布时间】:2018-06-15 10:25:39
【问题描述】:

我非常不确定为什么我的代码会出现这样的错误

try {
$stmt = $connection->prepare("INSERT INTO table (path, title, era, information)
            VALUES (:path, :title, :era, :information)");
$stmt->bindParam(':path', $fname);
$stmt->bindParam(':title', $Name);
$stmt->bindParam(':era', $Era);
$stmt->bindParam(':descrip', $Description);

// insert row
$stmt->execute();
}
catch(PDOException $e) {
echo $e->getMessage();
}
echo "Upload Successful";
}

我尝试了很多不同的选项,但我无法修复错误

$fname=$_FILES["userfile"]["name"];
$Name =$_POST["name"];
$Era =$_POST["era"];
$Description =$_POST["info"];

这些是我使用的变量,如果这有助于解决我的问题

【问题讨论】:

标签: php pdo


【解决方案1】:

您在prepare 语句中定义值':path, :title, :era, :information',但稍后尝试为字段':descrip' 设置值。因为该字段未在 prepare 调用中定义,所以您会收到该错误。

使用':information' 而不是':descrip'

【讨论】:

  • 感谢您的帮助我已修复该错误但现在我收到此错误 SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在 'table (path, title, era, information) VALUES ('a.png', 'asd', 'H' at line 1
  • @dave TABLE 是一个 SQL 关键字,因此如果不使用反斜杠转义它就不能使用它。使用 `table` 就可以了。
  • @Dave 帮助自己,并给予适当的感谢(赞成并接受以结束此问题)。您上面的评论是另一个问题的材料,不要将新问题堆叠为 cmets。
猜你喜欢
  • 2017-06-10
  • 1970-01-01
  • 2012-06-13
  • 2012-04-15
  • 2020-03-18
相关资源
最近更新 更多