PHP INSERT into创建数据库错误

时间:2014-11-09 03:04:18

标签: php mysql insert

我正在尝试创建一个函数,该函数将通过表单插入数据库中的项目(并将执行相同的编辑)。我有表单和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;

4 个答案:

答案 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 statementsPDO 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)

这里有很多错误......

  1. 您在这两项中的第二项上缺少引号,以及字符串concat或逗号:'$description2' $tags'
  2. 您的订单也因标签,搜索标签和说明1/2而搞砸了。
  3. $description在那里两次(你的语句中定义了9列,你的语句中有10个值)
  4. 您似乎没有声明$table
  5. 的值
  6. 正如Fred -ii-在他的回答中指出的那样,你错过mysql_query()来实际运行它。我假设你的代码中有更深层次的内容,但是帖子中缺少它,这引起了一些混淆......
  7. 另外,请考虑更新以使用mysqli代替mysql函数。

答案 2 :(得分:0)

你在回答$ query的内容是什么? 除非您只是想将它用作字符串变量,否则您没有任何理由这样做。

它应该是mysql_query($ query);

答案 3 :(得分:0)

您遇到的确切“数据库错误”错误是什么?

  • 我建议阅读有关PDO的this文章
  • 如果您无法正确插入数据,this可能也是您的问题。