我试图使用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!";
?>
答案 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)