【问题标题】:PHP PDOStatement::execute(): SQLSTATE[HY093]PHP PDOStatement::execute(): SQLSTATE[HY093]
【发布时间】:2019-10-06 11:19:12
【问题描述】:

警告:PDOStatement::execute(): SQLSTATE[HY093]: 参数编号无效:参数未在第 14 行的 C:\xamppp\htdocs\porto\yonetim\network\islem.php 中定义

我得到一个错误

项目来源:https://www.youtube.com/watch?v=Kwy40bF_0Fg&list=PLZtkgIR0fgTHt1ZaDskLfv3WwVTdCYDIU&index=12

<?php 
    ob_start();
    include 'baglan.php';
    if (isset($_POST['genelayarkaydet'])) {
        $ayarkaydet=$db->prepare("UPDATE ayar SET
ayar_siteurl=:ayar_siteurl,
ayar_title=:title
WHERE ayar_id=0");

        $update = $ayarkaydet -> execute(array(
'siteurl' => $_POST['ayar_siteurl'],
'title' => $_POST['ayar_title']
));

        if ($update) {
            echo "Başarılı..";
        }
    }
?>

【问题讨论】:

  • 您在 SQL 中声明占位符 ayar_siteurl,但在参数数组中分配给键 siteurl

标签: php mysql pdo execute ob-start


【解决方案1】:

试试这个:

$update = $ayarkaydet->execute([
':aray_siteurl' => $_POST['ayar_siteurl'],
':title' => $_POST['ayar_title']]);

【讨论】:

  • Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\xamppp\htdocs\porto\yonetim\network\islem.php on line 14
  • 我的错,拼写错误大声笑.. 更改aray_siteurl -> ayar_siteurl
  • @Marh 你应该编辑你的答案,为了其他 SO 用户的利益,也许提供一些解释。
【解决方案2】:

您的代码有很多拼写错误。你的执行语句是错误的。

我再次想知道 ayar_id = 0 在做什么。我相信这应该是数据库增量的唯一值。如果是,那么您的表创建是错误的。

例如,您还可以将 ayar_id 设为 int 和主键

例如。 create table ayar(ayar_id int primary key auto_increment, ayar_title varchar(3));

主键会将 ayar_id 的值设置为 1,以便第一次插入计数。不管怎样,因为你的 ayar_id 是 0。我已经为你重写了代码

<?php 
ob_start();
include 'baglan.php';

/*  my own db connections
$db = new PDO (
    'mysql:host=localhost;dbname=your_db_name;charset=utf8', 
    'root', // username

    '' // password
);
*/

if (isset($_POST['genelayarkaydet'])) {


 $ayarkaydet=$db->prepare("UPDATE ayar SET ayar_siteurl=:ayar_siteurl,ayar_title=:ayar_title WHERE ayar_id=:ayar_id");

        $ayarkaydet->execute(array(
            'ayar_siteurl' => $_POST['ayar_siteurl'],
'ayar_title' => $_POST['ayar_title'],
'ayar_id' => '0'
    ));


if ($ayarkaydet) {
    echo "Başarılı..";
}


}


 ?>

【讨论】:

    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多