php - 在提交到数据库之前从字符串中提取信息

标签 php arrays database

我想从下面的代码中提取一些信息。比如user_name, user_email 才提交到数据库。

据我所知,$user_info['user_field_fields'] 是数据库字段,$user_info['user_field_inputs'] 是要插入对应字段的值。

$result = dbquery("INSERT INTO ".DB_USERS." (".$user_info['user_field_fields'].") VALUES (".$user_info['user_field_inputs'].")");

如果我可以使用这样的 php 代码就好了:

echo $user_name;

echo $user_email;

echo other_values;

实验:

$data = array($user_info['user_field_fields'] => $user_info['user_field_inputs']);

并试图展示一些值(value)。 但我无法让它工作。

Edit1: var_dump($user_info) 的输出; 哈希值已更改并已匿名化。

array(7) { ["user_name"]=> string(13) "Some username" ["user_password"]=> string(64) "0b27f3b44401f2633a1bbcf8447069f555be27eb3adce3ec2f53056ff65325" ["user_salt"]=> string(40) "78aefb9666662399cfaef1a76307777ab859f45" ["user_algo"]=> string(6) "sha256" ["user_email"]=> string(23) "some@email.com" ["user_field_fields"]=> string(331) "user_name, user_algo, user_salt, user_password, user_email, user_hide_email, user_avatar, user_posts, user_threads, user_joined, user_lastvisit, user_ip, user_ip_type, user_rights, user_groups, user_level, user_status, user_location, user_zip, user_inetpakket, user_modem, user_router, user_tvpakket, user_tvkpakket, user_ontvanger" ["user_field_inputs"]=> string(297) "'Some username', 'sha256', '78aefb9666662399cfaef1a76307777ab859f45', '0b27f3b44401f2633a1bbcf8447069f555be27eb3adce3ec2f53056ff65325', 'some@email.com', '1', '', '0', '0', '1388665205', '0', '183.81.50.14', '4', '', '', '101', '0', 'Amsterdam', '1000AA', '1', '', '', '1', '', '1601'" }

Edit2:使用来自 Ushakov Nik 的解决方案的工作代码

$user_field_fields = explode(', ', $user_info['user_field_fields']); // for getting array of fields
$user_field_inputs = explode(', ', $user_info['user_field_inputs']); // for getting values
foreach($user_field_inputs as $k => $val) { $user_field_inputs[$k] = trim($val, "'"); }
$data= array_combine($user_field_fields, $user_field_inputs);
extract($data);
$data= "user_name: ".$user_name."<br />user_email: ".$user_email."<br />http://whois.domaintools.com/".$user_ip;

$data 将通过电子邮件发送给管理员,以防止在很少监控的网站上出现垃圾邮件。

最佳答案

如果您确定字段和值的顺序相同,那么您可以使用

array_combine :

$data = array_combine($user_info['user_field_fields'], $user_info['user_field_inputs']);

它会给你类似的东西

array(
    'user_email' => 'ex@example.com',
    'user_name' => 'Some Name'
)

然后你可以做 extract

extract($data);

然后你就可以使用你想要的变量了

编辑

添加 var_dump($user_info); 的输出后,很明显我弄错了:它是字符串!所以你需要一些准备。

$user_field_fields = explode(', ', $user_info['user_field_fields']); // for getting array of fields

$user_field_inputs = explode(', ', $user_info['user_field_inputs']); // for getting values

$user_field_inputs 的每个元素都必须被剪裁掉引号字符

foreach($user_field_inputs as $k => $val) {
    $user_field_inputs[$k] = trim($val, "'");
}

现在你可以做

$data = array_combine($user_field_fields, $user_field_inputs);

等等

关于php - 在提交到数据库之前从字符串中提取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20925277/

相关文章:

php - STRTOTIME 从 mysql 获取日期和数据并在 php 上连接它们

java - 开源现实生活许可证示例 : yours or others

database - 数据库表中的排序列

database - 在多个实体之间同步数据最聪明、最简单的方法是什么?

PHP is_dir 总是返回 false

即使 system() 中的命令完成,PHP system() 也会挂起

javascript - 如果我知道另一个值,请在多维数组中查找一个值?

c - 学习c编程——将数组传递给函数

javascript - 根据第二个数组问题对第一个数组进行排序

SQL 表关系