我正在尝试在数据库中插入一个值,但是当我打开数据库时,该值未插入表中。现在所有的代码都没有拼写错误或类似的东西,但为什么不在数据库表中插入一个值呢?
我只需说这个字段不是主键字段,我只是测试这个非主键字段的字段,如果未插入主键值,它是否会在db表中插入一个值?
以下是代码:
<?php
session_start();
$username="xxx";
$password="xxx";
$database="mobile_app";
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$sql="INSERT INTO Session (Course)
VALUES
('$_POST[course]')";
mysql_close();
if (isset($_POST['course'])) {
$_SESSION['course'] = $_POST['course'];
}
?>
答案 0 :(得分:1)
您需要在那里添加主键。除非主键是自动生成的(标识),否则无法在未指定主键的情况下向数据库添加行。
编辑:正如Damien指出的那样,在定义$ sql变量后,您需要添加以下行。
mysql_query($sql)
答案 1 :(得分:1)
你的问题的答案是否定的。你不能像这样在数据库中插入一个值(没有为主键插入一些值)
答案 2 :(得分:1)
你不应该在某处执行SQL查询吗?目前,您所做的只是将sql查询分配给变量。它永远不会被执行。
(另外,谷歌搜索Bobby Tables ...)
答案 3 :(得分:1)
您是否遗漏了“mysql_query”声明?
mysql_query($sql);
您必须更改编写查询的方式。它是开放的攻击!
答案 4 :(得分:1)
将您给定的代码段更改为:
<?php
session_start();
$username="xxx";
$password="xxx";
$database="mobile_app";
mysql_connect('localhost',$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
if (isset($_POST['course'])) {
$_SESSION['course'] = $_POST['course'];
$sql="INSERT INTO Session (Course) VALUES (' ". mysql_real_escape_string( $_POST['course'] ) . "' );";
}
mysql_query( $sql );
mysql_close();
?>
答案 5 :(得分:1)
嗯..你必须执行查询,实际上INSERT
语句才能生效。
对于一般的代码,你必须从如此古老的教程中学习。 mysql_*
函数现在已超过10年,不再维护。 您不应该使用mysql_*
函数编写任何新代码。 PHP社区已经转移到make them deprecated。您应该使用PDO或MySQLi代替。
并且停止滥用错误抑制运算符@
。它很慢并且在大多数情况下被认为是有害的。
相反,你应该写一些类似的东西:
// connect to database
$connection = new PDO('mysql:host=localhost;dbname=mobile_app;charset=UTF-8',
'username', 'password');
$connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
// set up the query
$query = 'INSERT INTO Session (Course) VALUES(:course)';
$statement = $connection->prepare( $query );
$statement->bindParam( ':course', $_POST['course'], PDO::PARAM_STR, 63 );
// last parameter is max length of field in the table
// perform the query
if ( $statement->execute() )
{
// everything worked
}
如果您想学习如何在MySQL中使用PDO:this tutorial会有所帮助。如果认为MySQLi API是更好的选择,那么你必须自己找一些。