我的 PHP 代码工作正常,但是当我通过 instagram 或 facebook 上的链接打开它时,上面写着,“名称”列不能为空

问题描述 投票:0回答:1

代码在网络上和移动设备上都能正常工作。如果通过 instagram 或 facebook 社交页面将其作为链接打开,问题就开始了。

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



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

$sql = $conn->prepare('SELECT COUNT(*) AS `total` FROM sutaz_tabulka WHERE meno = :meno');
$meno = $_POST['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->bindValue(':meno', $meno);
    $stmt->execute(array(':meno' => $meno));
}
?>

我附上以下错误信息:

致命错误:未捕获的异常“PDOException”,消息为“SQLSTATE[23000]:违反完整性约束:1048 /data/5/8/582bf4f8-549d-48a3-833c-52986c8a8ca5/zapojsavyhraj 中的列'meno'不能为空'。 sk/web/post-comment.php:30 堆栈跟踪:#0 /data/5/8/582bf4f8-549d-48a3-833c-52986c8a8ca5/zapojsavyhraj.sk/web/post-comment.php(30): PDOStatement- >execute(Array) #1 {main} 在第 30 行的 /data/5/8/582bf4f8-549d-48a3-833c-52986c8a8ca5/zapojsavyhraj.sk/web/post-comment.php 中抛出

php pdo null
1个回答
0
投票

当您打开此页面作为链接时

$_POST['meno'];
必须为 null,如果您通过 AJAX 调用此脚本,它可以包含数据

所以如果你想打开这个页面作为链接你必须添加一个条件

if isset($_POST['meno']) or if !empty($_POST['meno']):

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

    //this condition verifies that POST memo exists
    if (isset($_POST['meno']))
    {
    $conn = new PDO('xxxxxxxxxxxxx');
    $conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = $conn->prepare('SELECT COUNT(*) AS `total` FROM sutaz_tabulka WHERE meno = :meno');
    $meno = $_POST['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->bindValue(':meno', $meno);
        $stmt->execute(array(':meno' => $meno));
    }
    }
    ?>
© www.soinside.com 2019 - 2024. All rights reserved.