所以我有一个表单和表单action =包含下面代码的文件。我正在连接,但数据没有保存。我用输入类型textarea和带有长文本的数据库格式化我的表单,因为我想给用户提供他们写入信息所需的空间。我认为这可能是我的问题,并一直在网上搜索是否是,但我找不到任何说它是不是。奇怪的是,有一次我确实看到了数据库行的增加但是当我检查它时,行没有包含我发送的信息,它是空白的。
<?php
session_start();
if (strlen($_POST['recipe'])|| strlen($_POST['usrtext'])||strlen($_POST['usrtxt']) ='0')
{header('location:shareerror.php');}
else
{
$connection = mysql_connect("localhost","root","")
or die("no connection");
$db_select=mysql_select_db("smqr",$connection)
or die("no connection to db");
$query=mysql_query("INSERT INTO seafood(`recipe`,`usrtext`,'usrtxt')
VALUES('$recipe','$usrtext''$usrtxt')");
header ('location:thanks.php'); }
?>
答案 0 :(得分:1)
错误的是你分配而不是检查更正的陈述是:
if (strlen($_POST['recipe'])|| strlen($_POST['usrtext'])||strlen($_POST['usrtxt']) ==0)
答案 1 :(得分:0)
您的查询中存在错误
$query=mysql_query("INSERT INTO seafood(`recipe`,`usrtext`,'usrtxt')
VALUES('$recipe','$usrtext''$usrtxt')");
将此更改为
$query=mysql_query("INSERT INTO seafood(`recipe`,`usrtext`,`usrtxt`)
VALUES('$recipe','$usrtext','$usrtxt')");
答案 2 :(得分:0)
您没有为$ recipe,$ usrtext和$ usrtxt
设置值您在值中缺少逗号。
您正在使用strlen而不是isset
另请注意How can I prevent SQL injection in PHP?。您的代码很容易被SQL注入。
这是固定代码(sql注入漏洞完好无损!!)
<?php
session_start();
if (!isset($_POST['recipe'])|| !isset($_POST['usrtext'])||!isset($_POST['usrtxt']))
{
header('location:shareerror.php');
}
else
{
$connection = mysql_connect("localhost","root","")
or die("no connection");
$db_select=mysql_select_db("smqr",$connection)
or die("no connection to db");
$recipe = $_POST['recipe'];
$usrtext = $_POST['usrtext'];
$usrtxt = $_POST['usrtxt'];
$query=mysql_query("INSERT INTO seafood(`recipe`,`usrtext`,'usrtxt')
VALUES('$recipe','$usrtext','$usrtxt')");
header('location:thanks.php');
}
?>
答案 3 :(得分:0)
此外,您没有分配查询中使用的变量。
$query=mysql_query("INSERT INTO seafood(`recipe`,`usrtext`,`usrtxt`)
VALUES('$recipe','$usrtext','$usrtxt')");
这样做:
$recipe = $_POST['recipe'];
$usrtext = $_POST['usrtext'];
$urstxt = $_POST['usertxt'];
然后您可以使用查询中的变量