Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用PHP通过HTML表单将数据插入MySQL_Php_Html_Mysql_Forms - Fatal编程技术网

无法使用PHP通过HTML表单将数据插入MySQL

无法使用PHP通过HTML表单将数据插入MySQL,php,html,mysql,forms,Php,Html,Mysql,Forms,这是我的表格: <html> <head> <title>Stats</title> </head> <body> <h2>Member Information Form</h2> <form action="submit_mbr_nfo.php" method="post"> Member ID <input type ="text" name= "mbrid"/>

这是我的表格:

<html>
<head>
<title>Stats</title>
</head>
<body>
<h2>Member Information Form</h2>

<form action="submit_mbr_nfo.php" method="post">
    Member ID <input type ="text" name= "mbrid"/><br>
    Member Name <input type="text" name="mbrnm"/><br>
    Actual Name <input type="text" name="atlnm"/><br>
    <input type="submit" value="Save"/>
</form>

</body>
</html>
<?php
//Define database properties in global variables
define('DB_NAME', 'STATS');
define('DB_USER', 'root');
define('DB_PASSWORD', 'Test');
define('DB_HOST', 'localhost');

//store connection props in var
$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

//check connection
if (!$link) {
    die ('Could not connect to the Database: ' . mysql_error());
}

//map $_POST to vars
$mbr_id = mysql_real_escape_string($link, $_POST['mbrid']);
$mbr_nm = mysql_real_escape_string($link, $_POST['mbrnm']);
$atl_nm = mysql_real_escape_string($link, $_POST['atlnm']);

 $sql = 'INSERT INTO MBR_NFO '.'(MBR_ID,MBR_NM,ATL_NM) '.'VALUES ('$mbr_id', '$mbr_nm','$atl_nm')';

mysql_select_db('STATS');
$exe_query = mysql_query( $sql, $link);
?>
PHP Parse error:  syntax error, unexpected '$mbr_id' (T_VARIABLE) in /Applications/MAMP/htdocs/stats/submit_mbr_nfo.php on line 21
我是个新手,正在学习PHP和HTML,我尝试了几种在线解决方案,但到目前为止都没有效果。如果我不使用$\u POST,也就是说,在php代码中手动输入值,我就可以插入数据库,但这不是目标,目标是使用表单填充MySQL数据库。非常感谢您的帮助。

请尝试以下查询

 $sql = "INSERT INTO MBR_NFO (MBR_ID,MBR_NM,ATL_NM) VALUES ('$mbr_id', '$mbr_nm','$atl_nm')";

您在字符串连接和引号方面遇到问题。尝试以下查询:

$sql = "INSERT INTO MBR_NFO (MBR_ID,MBR_NM,ATL_NM) VALUES('$mbr_id', '$mbr_nm','$atl_nm')";

若在数据库中为成员id设置主键和自动增量 所以这很容易。您不需要在查询中写入mbr_id

$query=“插入MBR_-NFO(MBR_-NM,ATL_-NM)值(“$MBR_-NM”,“$ATL_-NM”)”

这是一个简单的方法

如果不想设置主键和自动增量,请尝试此代码


$query=“插入MBR\u NFO(MBR\u ID、MBR\u NM、ATL\u NM)。值(“$MBR\u ID”、“$MBR\u NM”、“ATL\u NM”)

您应该使用准备好的语句(见下文),而不是手动关联查询字符串。但是,由于您是PHP新手,让我们首先修复您的代码。线路

$sql = 'INSERT INTO MBR_NFO '.'(MBR_ID,MBR_NM,ATL_NM) '.'VALUES ('$mbr_id', '$mbr_nm','$atl_nm')';
他有几个缺点。在PHP中,字符串连接是通过点
操作符完成的,您只使用了部分。为了构造查询字符串
$sql
,必须添加两个点:

$sql = 'INSERT INTO MBR_NFO (MBR_ID,MBR_NM,ATL_NM) VALUES (' . $mbr_id . ', ' . $mbr_nm . ',' . $atl_nm . ')'; 
虽然这是有效的PHP语法,但仍然没有有效的SQL。如果您的用户输入是
$mbr\u id=42
$mbr\u nm='amit'
$atl\u nm='amit Kumar'
,那么在连接之后,
$sql
看起来像

INSERT INTO MBR_NFO (MBR_ID,MBR_NM,ATL_NM) VALUES (1, amit, Amit Kumar)
字符串
amit
amit Kumar
周围缺少引号。充其量,这会使您的查询无效;在最坏的情况下,它会让你产生疑问。因此,使用

$sql = 'INSERT INTO MBR_NFO (MBR_ID,MBR_NM,ATL_NM) VALUES ("' . $mbr_id . '", "' . $mbr_nm . '","' . $atl_nm . '")';
或者,因为在PHP中,对变量进行求值,例如
“我的名字是$name”
,而不是
“我的名字是$name”

$sql = "INSERT INTO MBR_NFO (MBR_ID,MBR_NM,ATL_NM) VALUES ('$mbr_id', '$mbr_nm,'$atl_nm')";

然而,到目前为止,最好的做法是:


如果你是新来学习php的,那么就开始学习
mysqli或PDO
,因为mysql不受欢迎。你是对的,谢谢这是有效的,但是,它为MBR_NM和ATL_NM插入了空白值,除了PK(MBR_ID)。谢谢,我尝试了以上所有方法,但没有任何效果,我仍然遗漏了一些东西。谢谢你让我知道Prep语句和param查询,我也会研究它们。@AmitKumar哪种方式不起作用?您是否有错误(哪一个?)或不良行为?
$con = new PDO('mysql:host=localhost;dbname=STATS', 'root', 'Test');

$stmt = $con->prepare('INSERT INTO MBR_NFO (MBR_ID,MBR_NM,ATL_NM) VALUES (:mbr_id, :mbr_nm, :atl_nm)');
$stmt->bindValue(':id', $mbr_id);
$stmt->bindValue(':mbr_nm', $mbr_nm);
$stmt->bindValue(':atl_nm', $atl_nm);
$stmt->execute();