0

我是 PHP 新手。我一直在研究一个简单的表单,它将数据提交到 MySQL 数据库并遇到了障碍。我只是不确定代码中的错误在哪里,任何帮助将不胜感激。

<?php

$host      = 'localhost'; // hostname
$username  = 'root'; // MySQL Username
$password  = 'root'; // MySQL Password
$db_name   = 'idp'; // Database name
$tbl_name  = 'data'; // Table name

// Attempt MySQL Connection
mysql_connect("$host", "$username", "$password")or die("Cannot connect.");
// Attempt database connection
mysql_select_db("$db_name")or die("Cannot select DB.");

$name      = $_POST['name'];
$mbr_name   = $_POST['mbr_name'];
$mbr_tel   = $_POST['mbr_tel'];
$date      = $_POST['date'];

$sql     = "INSERT INTO $tbl_name(name, mbr_name, mbr_tel, date)VALUES('$name',       '$mbr_name', '$mbr_tel', '$date')";
$result  = mysql_query($sql);

if($result) {
echo "Entry Successful";
echo "<br>";
echo "<a href='form.php'>Return to Form</a>";
} else {
echo "<strong>Error</strong>";
}

mysql_close();
?>
4

4 回答 4

1

我的猜测是,您获得的其中一个输入参数未转义'或包含"字符。因此,由于意外的引号字符,您的查询会中断。要验证是否是这种情况,请在创建 sql 语句后立即为 sql 引入另一个打印语句,并在查询浏览器中手动运行它,看看它是否有效。

此外,if($result) {无论发生故障的原因如何,代码中的块都会打印出成功或失败消息,因此输出信息也不是特别有用。

您应该查看[addslashes][1]转义这些引号字符的方法。

您的查询将变成类似

$sql = "INSERT INTO $tbl_name(name, date)VALUES('".addslashes($name)."', '".$date."')";

另外,我建议您查看pdo的 sql 查询而不是mysql_*函数。

于 2013-10-14T18:24:37.623 回答
0

试试你这样的查询:

$sql     = "INSERT INTO $tbl_name(name, mbr_name, mbr_tel, date)VALUES('".$name."',       '".$mbr_name."', '".$mbr_tel."', '".$date."')";
于 2013-10-14T17:49:27.427 回答
0

删除你的“”mysql_connect($host,$username,$password); mysql_select_db($db_name); 这是一个好习惯

$sql = "INSERT INTO $tbl_name(name, mbr_name, mbr_tel, date)VALUES('{$name}','{$mbr_name}','{$mbr_tel}', '{$date}')";

还要检查您的数据类型的日期。如果您发布的日期是 current ,您可以使用 sql 函数而不是 POST 作为日期,例如:

$sql = "INSERT INTO $tbl_name(name, mbr_name, mbr_tel, date)VALUES('{$name}','{$mbr_name}','{$mbr_tel}',NOW())";
于 2013-10-14T18:52:14.643 回答
0

您的代码已弃用,请参阅 Zend 类加载器,以及 Zend_db_* 类。

[http://framework.zend.com/manual/1.12/fr/zend.db.statement.html][1]

PS:Zend 是一个框架,你可以使用任何流行的框架,如 Yii、CakePhp 等。

于 2013-10-15T11:39:20.060 回答