麻烦将值插入Mysql数据库:

时间:2015-03-31 18:20:01

标签: php mysql database

我试图使用php将值放入Mysql数据库。我只是在最早阶段,确保它在应用到我的项目之前有效。我已经通过其他人的问题看了不同的方法来实现,我不知道为什么这不能插入价值。

我应该指定一个特定的行来插入吗?现在,我只是尝试将值3插入数据库的Yield列。我已检查以确保列名中第一个字母的大写字母正确,并且数据库表的正确名称为cost_table。

当我运行时,我得到了打印的声明,"未能插入.."当我检查数据库时,它仍然完全为空。

<?php
//variables as connection info...//
   $LinkID=mysql_connect("$host","$username","$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");



$sql = "INSERT INTO cost_table('Yield') VALUES 3";
$check=mysql_query($sql,$LinkID);
if (!$check){
    die ("failed to insert..");
}
echo "Insert Successful!";
?>

2 个答案:

答案 0 :(得分:2)

首先,您对要插入的列使用错误的identifiers,并且您缺少值的括号和引号。

您可能已经在某处看过视频教程,其中的刻度看起来像是常规引号;经常出现这种情况。

错误的代码:

INSERT INTO cost_table('Yield') VALUES 3

应该读作哪个,并使用刻度而不是列名称周围的常规单引号:

$sql = "INSERT INTO cost_table (`Yield`) VALUES ('3')";

或者,如果您的专栏确实是int类型:

$sql = "INSERT INTO cost_table (`Yield`) VALUES (3)";

如果您以后想要使用$符号和/或小数$3.99,那么您需要引用值VALUES ('$3.99'),否则MySQL会抱怨。这种类型的值会要求您的列为VARCHAR; 只是一个旁注。对于小数减去美元符号,将需要decimal列类型。

使用以下内容后,会发出语法错误信号:

$check=mysql_query($sql,$LinkID) or die(mysql_error());

但是,您使用此方法向SQL injection开放,我建议您在进一步使用项目之前使用预准备语句。

以下是一些例子:

mysqli预备声明的示例:

$link = mysqli_connect("localhost", "user", "password", "database");

if (mysqli_connect_errno()) {
     printf("Connect failed: %s\n", mysqli_connect_error());
     exit();
} 

    $variable_1 = "Text";
    $variable_2 = "More text";

    $stmt = $link->prepare("INSERT INTO table_name 
                            (column_1, column_2) 
                            VALUES (?,?)");

    $stmt->bind_param('ss', $variable_1, $variable_2);
    $stmt->execute();
  • 旁注:s用于字符串

PDO准备声明的一个例子:

$dbh = new PDO('mysql:host=localhost;dbname=your_DB', $user, $pass);

$var_1 = "Text";
$var_2 = "More text";

$stmt = $dbh->prepare("INSERT INTO table_name 
                       (column_1, column_2) 
                       VALUES (:var_1,:var_2)");

$stmt->execute(array(':var_1' => $var_1, ':var_2' => $var_2));

参考文献:

答案 1 :(得分:1)

在尝试之前请先学习基础知识

以下链接将非常有用

正确的查询是

INSERT INTO cost_table(`Yield`) VALUES (3)