我正在尝试使用 PHP 数组和内爆函数将 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代码:
已创建分贝
$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');
使用内爆函数在 MySql 中的字段名称中插入数据。
$f_sql= "'" . implode(',' , array_keys($data)) ."'";
使用内爆函数在字段名称中插入数据。这将用于在 Mysql 中插入值
$v_sql="'".implode ("' ,",$data)."'";
最后是 MySql 命令:
$sql="insert into pracproj1 ($f_sql) VALUES ($v_sql)";
if( $sql== true){
echo "updated";
}
else
"failed";
我得到我按下提交按钮后回声的内容。但正如我所说。实时值没有更新到我的数据库中。
如果,不知何故我不使用数组或内爆函数,我就不会卡在任何地方。
我正在尝试学习更多可以在我的 Html 表单中使用的 PHP 概念,这就是我开始使用Implode和数组的原因。 请帮忙。
变量的数组$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 以及准备好的语句,正如 Magnus 在您的评论中所说的那样。