如何确定以下SQL语句是否正常工作

时间:2011-06-13 23:41:42

标签: php mysql

我是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);
?>

5 个答案:

答案 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和其他一些名称。

  • 始终打印错误消息,甚至终止输出。

  • 检查是否正确接收了POST项目。

以下是修改后的代码。

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!";
        }