为什么这个PHP脚本不会将表单数据提交给mysql?

时间:2011-05-14 19:21:05

标签: php html xhtml

这个脚本应该获取文本区域的内容并将其提交给mysql,但不是任何人都能看到原因吗?

    if ($_SERVER["REQUEST_METHOD"] == "POST") 
{
$error = '';
$like = mysql_real_escape_string($_POST['like_box']);

mysql_query("INSERT INTO likes (like) VALUES ($like)");

$id = mysql_query("SELECT id FROM likes WHERE like=$like");
header('Location:like.php?id='.$id.'');
}?>



<form method="post" action="post.php">
                <textarea name="like_box" id="like_box" style="border-style: none; border-color: inherit; border-width: 0; width: 458px; height: 65px" class="style11120"></textarea>

            <tr>
                <td style="height: 53px">
                <div class="style11116" style="width: 417px">
                    <input name="Submit" type="submit" value="submit" />
                    </form>

2 个答案:

答案 0 :(得分:2)

有一些错误报告会告诉您需要'围绕$like并且您需要`就像在插入内部的like is a reserved word中的列部分一样。

mysql_query("INSERT INTO likes (`like`) VALUES ('$like')") or trigger_error('Query Error: ' . mysql_error());

应该工作。


此外,你需要在`for the select:

中包含类似的内容
$id = mysql_query("SELECT id FROM likes WHERE `like`=$like") or trigger_error('Query Failed: ' . mysql_error());

答案 1 :(得分:2)

您的第一个SQL查询错误。您必须在SQL中用引号括起字符串值:

mysql_query("INSERT INTO likes (`like`) VALUES ('$like')");

您的PHP部分的其余部分将无法执行任何操作。 $ id将是结果集,而不是值。你必须像这样获取行:

$result = mysql_query("SELECT id FROM likes WHERE `like`='$like'");
$row = mysql_fetch_assoc($result);
$id = $row['id'];

甚至更好,只需通过调用mysql_insert_id替换第二个SQL查询:

$id = mysql_insert_id();

还有更多改进的可能性:

  • 完成exit调用后,请不要忘记致电header('Location: ...');,否则您可能会收到意外结果,因为脚本会继续运行。
  • 添加插件的错误处理。至少检查if语句是否成功。