php表单脚本

时间:2009-12-11 08:15:40

标签: php mysql html forms

我是PHP的新手,遇到了一些麻烦。我有一个使用HTML的表单,即action = .php method = post

表单正在使用文本框和选择选项,我不确定它是否会对sqldatabase产生影响。我已经尝试了这个脚本的大约30种不同的组合,只能获得连接成功的消息,但没有发布任何内容。

<?php 
$link = mysql_connect('everybodyslistcom.ipagemysql.com', 'accounts', 'accounts'); 
if (!$link) { 
    die('Could not connect: ' . mysql_error()); 
} 
echo 'Connected successfully'; 
mysql_select_db("user"); 
$FName = $_POST["FName"];
$LName = $_POST["Lname"];
$Phone = $_POST["Phone"];
$EmailAddress = $_POST["EmailAddress"];
$Month = $_POST["Month"];
$Day = $_POST["Day"];
$Year = $_POST["Year"];
$Username = $_POST["Username"];
$Password = $_POST["Password"];

$sql = 'INSERT INTO Members (ID, FName, LName, Phone, EmailAddress, Month, Day, Year, Username, Password) VALUES'
    . '(\'\', \'$FName\', \'$LName\', \'$Phone\', \'$EmailAddress\', \'$Month\', \'$Day\', \'$Year\', \'$Username\', \'$Password\')';

mysql_close();
php?>

7 个答案:

答案 0 :(得分:4)

尝试执行您的查询

mysql_query($sql);
编辑:我看到你这样做了:

$sql = 'SELECT bla bal $variable';

PHP不会解析变量。正确的方法:

$sql = "SELECT bla bla $variable"; // valid
$sql = "SELECT bla bla {$variable}"; // also valid
$sql = 'SELECT bla bla '.$variable; // also valid

答案 1 :(得分:2)

你的关闭php标签不正确,应该是

 ?>

而不是

 php?>

您也不会使用以下方式执行查询:

mysql_query('your query here');

这可能会导致问题。

答案 2 :(得分:1)

  1. 您的变量不会被PHP解释。如果要在字符串中解析变量,则应将其包装在double-quote(“)
  2. 如果您发布的任何数据包含某些引号字符,则可能会失败,因此您必须将mysql_real_escape_string应用于所有这些字符。
  3. 我希望您在此处发布的数据库连接凭据不真实? :d

答案 3 :(得分:1)

你说你的表单字面上包含“action = .php”,你必须把它变成:

<form name="form_name" method="post" action="your_script.php">

答案 4 :(得分:0)

您还需要执行查询: mysql_query($ sql,$ link);

答案 5 :(得分:0)

你还应该检查POST是否真的发送过:

if (!empty($_POST)) {
    // ... your code here
}

接下来的事情:你不需要关闭标签?&gt;如果您的* .php文件只包含PHP代码 - 文件结尾也是PHP代码块的正确结束 - 这是“好的”习惯,因为在某些情况下它可以帮助您避免错误:“无法添加/修改标题信息 - 已经由...发送的标题“

下一个问题 - 将变量插入字符串的错误方法:

$sql = 'INSERT INTO Members (ID, FName, LName, Phone, EmailAddress, Month, Day, Year, Username, Password) VALUES'
. '(\'\', \'$FName\', \'$LName\', \'$Phone\', \'$EmailAddress\', \'$Month\', \'$Day\', \'$Year\', \'$Username\', \'$Password\')';

正确的方法:

$sql = "INSERT INTO Members (ID, FName, LName, Phone, EmailAddress, Month, Day, Year, Username, Password) VALUES (null, '$FName', '$LName', '$Phone', '$EmailAddress', '$Month', '$Day', '$Year', '$Username', '$Password')";

更多info here

接下来 - 正如Deniss所说,而不是:

$FName = $_POST["FName"];

应该是:

$FName = mysql_real_escape_string($_POST["FName"]);

实际上你应该先检查天气magic quotes gpc是否开启:

if (get_magic_quotes_gpc()) {
    if (!empty($_POST)) {
        array_walk_recursive($_POST, 'stripslashes_value');
    }
}
function stripslashes_value(&$value) {
    $value = stripslashes($value);
}

如果没有这个,你可能会遇到插入db的双\\问题(这取决于你的服务器配置)

最后但并非最不重要:罗伯特说你错过了一件更重要的事情:

mysql_query($sql);

答案 6 :(得分:0)

我认为你的错误是因为你没有调用mysql_query函数

可以尝试我的代码编辑

<?php 
$link = mysql_connect('everybodyslistcom.ipagemysql.com', 'accounts', 'accounts'); 
if (!$link) { 
die('Could not connect: ' . mysql_error()); 
} 
echo 'Connected successfully'; 
mysql_select_db("user",$link); 
$FName = $_POST["FName"];
$LName = $_POST["Lname"];
$Phone = $_POST["Phone"];
$EmailAddress = $_POST["EmailAddress"];
$Month = $_POST["Month"];
$Day = $_POST["Day"];
$Year = $_POST["Year"];
$Username = $_POST["Username"];
$Password = $_POST["Password"];

$sql = "INSERT INTO Members SET FName='{$FName}', LName='{$LName}', Phone='{$Phone}', EmailAddress='{$EmailAddress}', Month='{$Month}', Day='{$Day}', Year='{$Year}', Username='{$Username}', Password='{$Password}'";
// Call Function mysql_query insert new record in mysql table
mysql_query($sql,$link);
mysql_close($link);
?>

如果您有问题:)或者apache服务的注释,请给我评论 美好的一天