我正在尝试创建一个函数,该函数将通过表单插入数据库中的项目(并将执行相同的编辑)。我有表单和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;
答案 0 :(得分:5)
除'$description2' $tags'
=>中缺少的逗号外您之前添加的'$description2', $tags'
,由Ryan发出信号:还有一个缺失的引号,因此将其更改为'$description2', '$tags'
并拥有2x '$description'
个变量,删除一个。
VALUES
('$name','$category','$tags','$description','$description2', '$search_tags','$recipeAbout','$ingredients_1','$directions_1')";
但是,查询最重要的部分是,您必须使用未使用的mysql_query()
=> mysql_query()
这就是为什么一旦你修复了语法错误就没有插入数据的原因。
mysql_query()
是必不可少的部分。将以下内容添加到您的代码中:
if(mysql_query($sql,$link)){
echo "Success";
}
else{
echo "Error" . mysql_error();
}
另外,请使用prepared statements或PDO with prepared statements。
另外,请确保已将$table
分配给要输入数据的表格。它没有显示在您的问题中。
您也没有显示HTML表单包含的内容。确保您使用的是POST方法,并且所有元素都没有输入拼写错误。
将error reporting添加到文件的顶部,这有助于查找错误。
<?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));
?>
如果仍然无效,那么您需要检查数据库,表,列名称,包括类型和列长度。
答案 1 :(得分:3)
这里有很多错误......
'$description2' $tags'
$description
在那里两次(你的语句中定义了9列,你的语句中有10个值)$table
mysql_query()
来实际运行它。我假设你的代码中有更深层次的内容,但是帖子中缺少它,这引起了一些混淆...... 另外,请考虑更新以使用mysqli
代替mysql
函数。
答案 2 :(得分:0)
你在回答$ query的内容是什么? 除非您只是想将它用作字符串变量,否则您没有任何理由这样做。
它应该是mysql_query($ query);
答案 3 :(得分:0)