订阅按钮不会向数据库发送信息

时间:2018-01-01 10:56:43

标签: php mysql database submit

我的php文件有问题。当我点击发送按钮时,它会显示一个新窗口,说明连接正常并且信息已添加到数据库中,但是当我检查数据库时,名称和电子邮件都没有已被添加。请你帮我理解是什么问题?

String.valueOf(int)

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

<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>

它现在给我这个错误:解析错误:语法错误,意外'mysql_close'(T_STRING),期待','或';'在第38行的/opt/lampp/htdocs/project/Newsletter-signup.php中。

感谢您对Costantin的帮助,我的头脑正在爆炸。

2 个答案:

答案 0 :(得分:0)

我在mariadb和mysqli oop的windows上有xampp所以我不能给你发送一个complet脚本来测试,但我想你应该试试这个

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

或试试这个

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

这些&#34; rooles&#34;根据经验,你不应该在PHP中避免: 1.你应该使用{,}超过你期望的内容&#34;&#34;, 2.你应该避免在PHP脚本部分应该做某事之前发送内容(所以下次你需要添加标题或写cookie,会话等等。你不会强迫将它设置在文件的顶部和所有你的代码将紧凑,易于查看/编辑

例如。 我使用一个包含文件(正常的php文件:最大的文件2090行= 63kbytes或缩小的php文件与模块:3行= 37千字节)和一个页面,用于应用程序/网站中的每个视图以及模板页面 因此,您需要集中并集中所有其他页面中使用的模块的所有效率。

我使用oop =我被迫导致xampp将mariadb与php 7一起获得php执行的最大速度和质量,我有mysqli驱动程序:我可以插入我自己的函数来进行转换mysqli - &gt; mysql用户功能,但我不需要由后向转换引起的延迟oop - &gt;结构,所以我在模块中的所有代码都是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>

在过去,我使用了这个&#39;导致那个人说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();
}

答案 1 :(得分:0)

我再次把这些东西放在这里,因为我没有可能从编辑器代码括号中删除,所以你可以正确地复制粘贴这些东西:

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

因为php不会告诉你在前一行的末尾忘记了一个分号,但会抱怨&#39; if&#39;接下来

无论如何我在第一篇文章中说过我编辑..最好使用像我这样的用户函数来插入东西,以便在关键时刻丢失括号,或者其他错误,如此< / p>

我从不喜欢它,当其他人给予否定票只是因为某些东西是折旧的,过时的但仍然有效并且互联网上的服务器还有旧的PHP版本而不是php 7.1或最新版本。 和<noscript></noscript>的演讲是一样的:如果我不使用JavaScript,你就不应该拒绝访问你的内容,因为你的所有模板都是JavaScript而且你没有开放的替代品(因为你不是真正的程序员)引起所有其他&#34;程序员&#34;他们这样做

复制粘贴的新答案:

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

回波($ SQL);模具();

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

          {

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

          }