subscribe按钮不会将信息发送到数据库

qco9c6ql  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(265)

这个问题在这里已经有答案了

php解析/语法错误;以及如何解决这些问题(18个答案)
三年前关门了。
我对下面的php文件有一个问题。当我单击send按钮时,它会显示一个新窗口,说明连接正常,并且信息已添加到数据库中,但是当我检查数据库时,名称和电子邮件都没有添加。你能帮我弄清楚有什么问题吗?

<html>

<body>
<?php

$name = filter_input(INPUT_POST, 'name');
$email = filter_input(INPUT_POST, 'email');

    $servername = "127.0.0.1";
    $username = "username";
    $password = "password";
    $dbname = "Subscription";
    $con = mysql_connect($servername,$username,$password,$dbname);
    if (!$con)

  {

  die('Could not connect: ' . mysql_error());

  }

    echo "Connected successfully";
    mysql_select_db("Subscription", $con);
    $name = false;
    if (isset($_POST['name'])) { $name = $_POST['name'];

    $email = false;
    if (isset($_POST['email'])) { $name = $_POST['email'];
 }
}

    echo "'You have been successfully added.' . '<br>'; ";

mysql_close($con)

?>
</body>

</html>

这是我在建议更正后使用的代码:

$con = mysql_connect($servername,$username,$password,$dbname);
    if (!$con)

  {

  die('Could not connect: ' . mysql_error());

  }

    echo "Connected successfully";
      mysql_select_db("Subscription", $con);

    $sql =  
$sql = "INSERT INTO newsletter (name, email) VALUES ('".mysql_real_escape_string($_POST['name'])."','".mysql_real_escape_string($_POST['email'])."');";
         if (!mysql_query($sql,$con))

          {

          die('Error: ' . mysql_error());

          }

        echo "'You have been successfully added.' . '<br>'; "

mysql_close($con);

?>

它现在给我这个错误:解析错误:语法错误,意外的'mysql_close'(t_string),期望','或';'在第38行的/opt/lampp/htdocs/project/newsletter-signup.php中。
谢谢你的帮助,科斯坦丁,我的头快爆炸了。

huus2vyu

huus2vyu1#

我再次把这些东西放在这里,因为我无法从编辑器代码括号中放出来,所以您可以正确地复制粘贴这些东西:

$sql = "INSERT INTO newsletter (name, email) VALUES ('".mysql_real_escape_string($_POST['name'])."','".mysql_real_escape_string($_POST['email'])."');";

因为php不会告诉您在前一行的末尾忘记了分号,但会抱怨下一行的“if”
不管怎么说,我在编辑的第一篇文章里是怎么说的。。最好使用像我这样的用户函数来插入内容,以便能够在关键时刻不出错,缺少括号,…或者其他类似的错误
我从不喜欢别人投反对票,因为有些东西被贬低了,过时了,但仍然有效,而且互联网上还有一些服务器使用的是旧的php版本,而不是php7.1或最新版本。和你的演讲一样吗 <noscript></noscript> :如果我不使用javascript,你不应该拒绝对你的内容的访问,因为你所有的模板都是javascript,你没有其他的选择(因为你不是一个真正的程序员),并导致所有其他“程序员”这样做
复制粘贴的新答案:

echo('You have been successfully added<br>');

echo($sql);模具();

if (!mysql_query($sql,$con))

          {

          die('Error: ' . mysql_error());

          }
ukdjmx9f

ukdjmx9f2#

我在windows上有xampp和mariadb以及mysqlioop,所以我不能给你发送一个完整的脚本来测试,但是我认为你应该试试这个

$sql = "INSERT INTO newsletter (name, email)
  VALUES ('".$_POST[name]."', '".$_POST[email]."')";

或者试试这个

$sql = "INSERT INTO newsletter (name, email)
  VALUES ('{$_POST[name]}', '{$_POST[email]}')";

根据经验,这些“rooles”在php中是不应该避免的:1.在php中使用{,}的次数应该比预期的多;2.在php脚本部分应该做一些事情之前,应该避免发送内容(因此下次需要添加头或编写cookie、会话等)。。您不必强制将其设置在文件的顶部,所有代码都将非常紧凑,并且易于查看/编辑
我使用一个include文件(普通php)file:biggest file 2090行=63kbytes或带有模块的缩小php文件:3行=37kbytes)以及应用程序/网站中每个视图的一个页面,以及一个模板页面,因此您需要集中并集中所有效率,围绕将在所有其他页面中使用的模块。
我使用oop=我是被迫的,因为xampp把mariadb和php7放在一起,以获得php执行的最大速度和质量,我有mysqli驱动程序:我可以插入我自己的函数来转换mysqli->mysql用户功能,但我不需要由oop->structural的反向转换引起的延迟,所以我所有模块中的代码都是oop。
你的脚本也应该这样修改

<?php

//here avoid using of output content or a space before <?php
$name = filter_input(INPUT_POST, 'name');
$email = filter_input(INPUT_POST, 'email');
//other stuff

//mysql stuff

?><html>

<body>
<?php
//output here

?>
</body>

</html>

在过去,我使用了这方面的合作,因为这家伙说mysql是不赞成的!

function insert($table){//insert(table,'var1=$val1',"var2=$val2")

    $columns = mysql_query("SHOW COLUMNS FROM "._T($table));
    while ($row = mysql_fetch_assoc($columns)) {
        if((strpos($row['Type'],'char')!==false)or(strpos($row['Type'],'blob')!==false))
            $schema[strtolower($row['Field'])]=true;
        else
            $schema[strtolower($row['Field'])]=false;
    }//$schema

    $na = func_num_args();
    if($na==0 or strpos(func_get_arg(0),'=') !== false)
        die('the table '.$table.'its missing !!!');
    if($na>=2){
        for($k=1;$k<$na;$k++){
            $param_i=func_get_arg($k);
            if(strpos($param_i,'=') !== false){// include all "var=values" for overwrite        
                $temp_para=explode('=', $param_i );
                $params[]=$temp_para[0];
                $values[]=$temp_para[1];
                $matrix[$k]=$schema[$temp_para[0]];//matrix
            }
        }
    }
    $string="INSERT INTO `".$table.'` (';
    $la=count($params);
    $x=1;
    foreach($params as $ch => $vl){
        if($x!=$la)
            $string.='`'.$vl.'`,';
        else
            $string.='`'.$vl.'`';
        $x++;
    }
    $string.=')VALUES (';

    $x=1;
    foreach($values as $ch => $vl){
        if($matrix[$x])
            $tpl="'";
        else
            $tpl="";
        if($x!=$la)
            $string.=$tpl.$vl.$tpl.',';
        else
            $string.=$tpl.$vl.$tpl;
        $x++;
    }
    $string.=');';
    //die
    //print
    //  ($string);
mysql_query($string);
return mysql_insert_id();
}

相关问题