我的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的帮助,我的头脑正在爆炸。
答案 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());
}