You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP代码网页/移动端正常,社交平台打开报Column 'meno' cannot be null错误

问题分析与修复方案

问题根源

当通过Instagram或Facebook的链接直接打开页面时,页面是通过GET请求加载的,而非表单提交的POST请求——这会导致$_POST['meno']未被赋值,变量$meno直接变成null。而你的数据库表sutaz_tabulka中meno字段设置了非空约束,因此执行INSERT操作时触发了SQLSTATE[23000]完整性约束错误。

修复步骤

  1. 校验请求方式与参数合法性
    在使用$_POST['meno']之前,先判断请求是否为POST,同时检查meno参数是否存在且不为空。
  2. 处理非法请求场景
    对不符合条件的请求(比如GET请求、参数为空),给出明确提示,避免执行后续数据库操作。
  3. 清理冗余代码
    你的代码中同时使用了bindValue()和execute()传参,两者选其一即可,避免冗余。

修改后的完整代码

<?php
header("Content-type: text/html; charset=utf-8"); 
$title = "xxxxxx";
require("header.php");

// 校验请求方式与参数有效性
if ($_SERVER['REQUEST_METHOD'] !== 'POST' || empty(trim($_POST['meno']))) {
    echo '<div class="dakujem" style="text-align: center; font-size: 30px; margin-top: 200px; padding: 50px 5px; color: white; background-color: rgb(220, 20, 60);">Prosím, použite formulár na zapojenie do súťaže!</div>';
    require("footer.php"); // 若有页脚文件可添加,保证页面结构完整
    exit;
}

$conn = new PDO('xxxxxxxxxxxxx');
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$meno = trim($_POST['meno']);
$sql = $conn->prepare('SELECT COUNT(*) AS `total` FROM sutaz_tabulka WHERE meno = :meno');
$sql->execute(array(':meno' => $meno));
$result = $sql->fetchObject();

if ($result->total > 0) 
{
    echo '<div class="dakujem" style="text-align: center; font-size: 30px; margin-top: 200px; padding: 50px 5px; color: white; background-color: rgb(220, 20, 60);">Nedávno ste sa už zapojili do našej súťaže!</div>';     
}
else
{
    $stmt = $conn->prepare("INSERT INTO sutaz_tabulka (meno) VALUES(:meno)");
    $stmt->execute(array(':meno' => $meno));
    // 添加成功提示
    echo '<div class="dakujem" style="text-align: center; font-size: 30px; margin-top: 200px; padding: 50px 5px; color: white; background-color: rgb(34, 139, 34);">Ďakujeme za zapojenie do súťaže!</div>';
}
?>

额外说明

  • 加入trim()是为了过滤用户输入的空白字符,避免仅输入空格导致的无效数据存入数据库。
  • 非法请求时直接exit,可以阻止后续代码执行,避免不必要的数据库连接操作。

内容的提问来源于stack exchange,提问作者Diana Viťazková

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:50:27