使用PHP将数据插入MySQL的问题

时间:2013-10-14 17:40:24

标签: php mysql

我是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 个答案:

答案 0 :(得分:1)

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

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

你应该看看[addslashes][1]方法来逃避那些引用字符。

您的查询将变成类似

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

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

答案 1 :(得分:1)

删除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}')";

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

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

答案 2 :(得分:0)

尝试这样查询:

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

答案 3 :(得分:0)

您的代码已弃用,请使用Zend_db_ *类引用Zend类加载器。

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

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