我是mysql的新手,我想知道以下代码是否应该正常工作。提交此表单后,我一直在检查我的数据库,没有任何内容输入到数据库中。请让我知道我做错了什么,谢谢!
<?php
$username = $_SESSION['username'];
$email = $_POST['email'];
$desc = $_POST['desc'];
$url = $_POST['url'];
$priority = $_POST['priority'];
if( strlen($username) > 0 && strlen($email) > 0 && strlen($desc) > 0)
{
$sql = "INSERT INTO feature_request_table (username, desc, email, url, priority, status)
VALUES( '$username' , '$desc' , '$email' , '$url' , '$priority' , '0' )";
echo "The sql statement is: " . $sql . "</br>";
mysql_query($sql);
//echo "The result is: " . $results . "</br>";
echo "Your request have been sent. Please allow a brief period of time for your webmaster implement your request. Thank you!";
}
mysql_close($con);
?>
答案 0 :(得分:1)
使用mysql_query()
的返回值并检查它是否为NULL
以确定查询是否成功:
$result = mysql_query($sql);
// A NULL value of $result indicates failure
if (!$result) {
// something went wrong!
// See the error...
echo mysql_error();
}
另外,我们在发布的代码中没有看到mysql_connect()
被调用。还要检查连接是否成功:
$conn = mysql_connect(all the connection details...);
if (!$conn) {
// connection failed
}
答案 1 :(得分:0)
您应该使用isset()
函数而不是strlen。此外,根据给定的代码,它看起来确实从未实际连接到mysql服务器。尝试将直接回显到phpMyAdmin的sql语句发布。
答案 2 :(得分:0)
我还没有看到的一件事是你可能没有打开自动提交,在这种情况下你的插入将返回TRUE,但在提交插入之前你不会看到DB的任何变化。 / p>
答案 3 :(得分:0)
这可以做到:
$data = mysql_query($sql);
if($data === false) { // TODO: better error handling
// Do something...
echo mysql_error();
// Or see the errors...
}
注意:如果您希望在所有情况下都有有效的HTML页面来处理您的错误,请不要使用或DIE()。
答案 4 :(得分:0)
以下是您需要做的更改。
在'desc'中使用列名desc和其他一些名称。
始终打印错误消息,甚至终止输出。
以下是修改后的代码。
if( isset($username) && isset($email) && isset($desc) )
{
$sql = "INSERT INTO feature_request_table (username, 'desc', email, url, priority, status)
VALUES( '$username' , '$desc' , '$email' , '$url' , '$priority' , '0' )";
echo "The sql statement is: " . $sql . "</br>";
mysql_query($sql) or die (mysql_error());
//echo "The result is: " . $results . "</br>";
echo "Your request have been sent. Please allow a brief period of time for your webmaster implement your request. Thank you!";
}