我正试图创建一个函数,该函数将通过表单在数据库中插入项(并对其进行编辑)。我有表单和PHP,当我运行该函数时,我会得到正确的数据库名称和变量名称以及我输入的值,但我随后看到数据库错误?任何帮助都将是伟大的(我仍然是新的PHP真的和拔出一些头发)
配置文件:
$hostname = 'localhost';
$username = 'DEFINED';
$password = 'DEFINED';
$database = 'DEFINED';
$table = 'recipes';
require('../config.php');
$link = mysql_connect($hostname,$username,$password);
mysql_select_db($database,$link);
/* Get values and submit */
$rid = mysql_real_escape_string($_POST['rid']);
$name = mysql_real_escape_string($_POST['name']);
$category = mysql_real_escape_string($_POST['category']);
$tags = mysql_real_escape_string($_POST['tags']);
$search_tags = mysql_real_escape_string($_POST['search_tags']);
$description = mysql_real_escape_string($_POST['description']);
$description2 = mysql_real_escape_string($_POST['description2']);
$recipeAbout = mysql_real_escape_string($_POST['recipeAbout']);
$ingredients_1 = mysql_real_escape_string($_POST['ingredients_1']);
$directions_1 = mysql_real_escape_string($_POST['directions_1']);
$query = "INSERT INTO $table (name, category, tags, search_tags, description,description2, recipeAbout, ingredients_1,directions_1) VALUES ('$name','$category','$description','$description2' $tags','$search_tags','$description','$recipeAbout','$ingredients_1','$directions_1')";
echo $query;
除了'$description2' $tags'
=>'$description2', $tags'
中缺失的逗号之外,您说这是后来添加的,并由Ryan发出信号:还有一个缺失的引号,所以将其更改为'$description2', '$tags'
,并具有2个'$description'
变量,删除一个。
VALUES
('$name','$category','$tags','$description','$description2', '$search_tags','$recipeAbout','$ingredients_1','$directions_1')";
然而,查询最重要的部分是,必须使用mysql_query()
,而不是使用=>mysql_query()
,这就是在修复语法错误后不插入数据的原因。
- CCD_ 7是关键部分
将以下内容添加到您的代码中:
if(mysql_query($sql,$link)){
echo "Success";
}
else{
echo "Error" . mysql_error();
}
此外,使用准备好的语句,或PDO与准备好的报表。
- 您正在使用一个不推荐使用的库,并对SQL注入开放
此外,请确保已将$table
分配给要输入数据的表。你的问题中没有显示。
您也没有显示HTML表单包含的内容。请确保您使用的是POST方法,并且所有元素的命名都没有拼写错误。
将错误报告添加到文件顶部,这将有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
旁注:错误报告只能在临时阶段进行,而不能在生产阶段进行。
编辑:并使用mysqli_
作为一个快速测试,请尝试以下操作,并将下面一行中的值替换为您自己的值。
<?php
$link = mysqli_connect("host","username","password","database")
or die("Error " . mysqli_error($link));
$table = "recipes";
$name = mysqli_real_escape_string($link,$_POST['name']);
mysqli_query($link,"INSERT INTO `$table` (`name`) VALUES ('".$name."')")
or die(mysqli_error($link));
?>
如果这仍然不起作用,那么您需要检查数据库、表、列名,包括类型和列长度。
这里有很多错误。。。
- 这两项中的第二项缺少引号,也缺少字符串concat或逗号:
'$description2' $tags'
- 您的订单中也有标签、搜索标签和1/2的描述
$description
在其中两次(您在语句中定义了9列和10个值)- 您似乎没有声明
$table
的值 - 正如Fred-ii在他的回答中指出的那样,你缺少
mysql_query()
来实际运行它。我以为你的代码中有它,但它在帖子中丢失了,这引起了一些混乱
此外,请考虑更新以使用mysqli
而不是mysql
函数。
您回显$query是为了什么?您没有任何理由这样做,除非您只是想将其用作字符串变量。
它应该是mysql_query($query);
您得到的确切"数据库错误"错误是什么?
- 我建议阅读这篇关于PDO的文章
- 如果您不能正确插入数据,这可能也是您的问题