Php 插入值列表与列列表不匹配:1136列计数不';不匹配值计数
我有以下PHP MySQL插入代码:Php 插入值列表与列列表不匹配:1136列计数不';不匹配值计数,php,mysql,pdo,Php,Mysql,Pdo,我有以下PHP MySQL插入代码: $sqlTeeth = "INSERT INTO teeth (id_logged, patient_id, one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eightteen, nineteen, twenty, twone, twtwo, twthree,
$sqlTeeth = "INSERT INTO teeth (id_logged, patient_id, one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eightteen, nineteen, twenty, twone, twtwo, twthree, twfour, twfive, twsix, twseven, tweight, twnine, thirty, thone, thtwo, date_now) VALUES (:id_logged, :patient_id, :one, :two, :three, :four, :five, :six, :seven, :eight, :nine, :ten, :eleven, :twelve, :thirteen,
:fourteen, :fifteen, :sixteen, :lone, :ltwo, :lthree, :lfour, :lfive, :lsix, :lseven, :leight, :lnine, :lten, :leleven, :ltwelve, :lthirteen,
:lfourteen, :lfifteen, :lsixteen)";
$sqlTeethStmt = $conn->prepare($sqlTeeth);
$sqlTeethStmt->bindValue(":id_logged", $id_logged);
$sqlTeethStmt->bindValue(":patient_id", $patient_id);
$sqlTeethStmt->bindValue(":one", $one);
$sqlTeethStmt->bindValue(":two", $two);
$sqlTeethStmt->bindValue(":three", $three);
$sqlTeethStmt->bindValue(":four", $four);
$sqlTeethStmt->bindValue(":five", $five);
$sqlTeethStmt->bindValue(":six", $six);
$sqlTeethStmt->bindValue(":seven", $seven);
$sqlTeethStmt->bindValue(":eight", $eight);
$sqlTeethStmt->bindValue(":nine", $nine);
$sqlTeethStmt->bindValue(":ten", $ten);
$sqlTeethStmt->bindValue(":eleven", $eleven);
$sqlTeethStmt->bindValue(":twelve", $twelve);
$sqlTeethStmt->bindValue(":thirteen", $thirteen);
$sqlTeethStmt->bindValue(":fourteen", $fourteen);
$sqlTeethStmt->bindValue(":fifteen", $fifteen);
$sqlTeethStmt->bindValue(":sixteen", $sixteen);
$sqlTeethStmt->bindValue(":lone", $lone);
$sqlTeethStmt->bindValue(":ltwo", $ltwo);
$sqlTeethStmt->bindValue(":lthree", $lthree);
$sqlTeethStmt->bindValue(":lfour", $lfour);
$sqlTeethStmt->bindValue(":lfive", $lfive);
$sqlTeethStmt->bindValue(":lsix", $lsix);
$sqlTeethStmt->bindValue(":lseven", $lseven);
$sqlTeethStmt->bindValue(":leight", $leight);
$sqlTeethStmt->bindValue(":lnine", $lnine);
$sqlTeethStmt->bindValue(":lten", $lten);
$sqlTeethStmt->bindValue(":leleven", $leleven);
$sqlTeethStmt->bindValue(":ltwelve", $ltwelve);
$sqlTeethStmt->bindValue(":lthirteen", $lthirteen);
$sqlTeethStmt->bindValue(":lfourteen", $lfourteen);
$sqlTeethStmt->bindValue(":lfifteen", $lfifteen);
$sqlTeethStmt->bindValue(":lsixteen", $lsixteen);
$sqlTeethStmt->execute();
当我向数据库添加某些内容时,出现以下错误:
SQLSTATE[21S01]:插入值列表与列列表不匹配:1136
列计数与第1行的值计数不匹配
非常感谢您的帮助。您的数据库表有35列
id_logged, patient_id, one, two, three, four, five, six, seven, eight, nine, ten, eleven, twelve, thirteen, fourteen, fifteen, sixteen, seventeen, eightteen, nineteen, twenty, twone, twtwo, twthree, twfour, twfive, twsix, twseven, tweight, twnine, thirty, thone, thtwo, date_now
其中,要传递的值为34列
VALUES (:id_logged, :patient_id, :one, :two, :three, :four, :five, :six, :seven, :eight, :nine, :ten, :eleven, :twelve, :thirteen,
:fourteen, :fifteen, :sixteen, :lone, :ltwo, :lthree, :lfour, :lfive, :lsix, :lseven, :leight, :lnine, :lten, :leleven, :ltwelve, :lthirteen, :lfourteen, :lfifteen, :lsixteen)
列不匹配会导致错误
您忘了立即传递日期列的值。传递后,将解决错误SQLSTATE[21S01]:插入值列表与列列表不匹配:1136列计数与第1行的值计数不匹配
前面的答案完全解释了潜在的问题,但理解错误报告可能也会有所帮助。它分为两部分:
Insert value list与column list不匹配:SQL语句首先由列列表组成,然后由值列表组成,两者不匹配
1136列计数与第1行的值计数不匹配问题在于列出的值的数量与列出的列的数量不相同
SQL错误代码写得相当简洁,可能看起来很模糊,但一旦分解它们,其含义通常非常简单。什么不清楚?消息简单明了:列计数与值计数不匹配。您的列列表越来越大,这不仅仅是一个小小的担忧。里面发生了什么事?正常化了吗?如果这已成为常规,您应该研究使用ORM为您封装它。检查
bindValue(':foo:,$value)
如果它的字段号与您的SQL字段一致,我会重新构造您的数据库,或者您的代码中从来没有(我的意思是,真的从来没有)需要更多的列吗?@androidnation我会使用一个like来帮助更好地组织它。它们通常有一个数据库层,允许您执行诸如$record->save()
之类的操作,而不是执行大量的代码。