无法使用php mysql

时间:2018-05-16 06:11:09

标签: php html mysql

我正在尝试使用PHP数组和内爆函数将Html表单数据插入到我的数据库中。 代码工作正常,没有错误,并给我提示说明已插入值。但是,当我查询我的数据库时,值不存在。

Html代码:

<form action="##"  method="Post">

用户名

<input type ="text" name="uname" >

名字

<input type ="text" name="fname"  >

电子邮件

<input type ="email" name="email" >

提交

<input type ="submit" name="submit" value="submit">

PHP代码:

Db 已创建

$con=mysql_connect("localhost","root","1234");

$db=mysql_select_db("abcd");

通过 POST 方法传递的值

$a=mysql_real_escape_string($_POST['uname']);

$b=mysql_real_escape_string($_POST['fname']);

$c=mysql_real_escape_string($_POST['email']);

将值转换为数组。

$data=array('$a','$b','$c');

使用implode函数在MySql中的feild名称中插入数据。

$f_sql= "'" . implode(',' , array_keys($data)) ."'";

使用implode函数在字段名称中插入数据。这将用于在Mysql中插入值

$v_sql="'".implode ("' ,",$data)."'";

最后MySql命令:

$sql="insert into pracproj1 ($f_sql) VALUES  ($v_sql)";

if( $sql== true){
    echo "updated";

}

else
    "failed";

提交按钮后,我得到回显的内容。但正如我所说。实时值不会更新到我的数据库中。

如果我不知道如何使用数组 Implode 功能,我就不会被卡在任何地方。

我正在尝试学习更多可以与我的Html表单一起使用的PHP概念,以及我开始使用 Implode 数组的原因。 请帮助。

1 个答案:

答案 0 :(得分:0)

变量数组$a$b$c看起来像这样(根据您的代码):

array(3) {
  [0] => string(2) "$a"
  [1] => string(2) "$b"
  [2] => string(2) "$c"
}

那是因为你要在array函数中插入字符串。您想插入变量。为此,您只需删除单引号:

$data = array($a, $b, $c);

或者,从PHP 5.4开始:

$data = [$a, $b, $c];

但是,您还必须确保$f_sql的结果等于数据库表的行名称。此时它只返回以下字符串:0,1,2。我怀疑你的行名是0,1,2。

如果您真的想使用数组,可以尝试以下内容:

$a = mysql_real_escape_string($_POST['uname']);
$b = mysql_real_escape_string($_POST['fname']);
$c = mysql_real_escape_string($_POST['email']);

// For older PHP versions we use 'array()' instead of brackets
$insertData = array(
  'uname' => $a,
  'fname' => $b,
  'email' => $c
);

$implodedFields = implode(',', array_keys($insertData));
$implodedValue = implode(',', $insertData);

$sql = "INSERT INTO pracproj1 ($implodedFields) VALUES  ($implodedValue)";

数组中的'uname''fname''email'应该等于数据库中行的名称。

如果您不打算动态生成数组或者有任何动态修改数组的逻辑,并且您想要我在我的示例中使用的静态数据,我建议您写出行名并自己回显变量更轻的性能的查询字符串:

$sql = "INSERT INTO pracproj1 (uname, fname, email) VALUES  ($a, $b, $c)";

重要提示:请务必阅读并考虑使用MySQLi或PDO以及prepared statements,正如Magnus在您的评论中所说。