我在PHP中做了一个简单的例子,目标是简单地将数组的值插入数据库。字段名称是数组键,字段值是数组值。我选择面向对象的样式进行查询,因为我正在练习OOP。当我循环它时,问题是:代码只接受数组的第一个索引,即“名称”;它应该接受这四个值,因为该表包含四个字段(名称,电子邮件,用户名,密码)。现在数据库中的结果只是name字段有值,其余字段为null。这是代码:
<?php
class User {
public static function insert($table, $table_fields = array()) {
if(count($table_fields)) {
foreach($table_fields as $field_name => $field_value) {
return "INSERT INTO $table ($field_name) VALUES ('$field_value')";
}
}
return false;
}
}
$connect = mysqli_connect('localhost', 'root', '', 'sample');
mysqli_query($connect, User::insert('users', array(
'name' => 'Sample Name',
'email' => 'samplename@samplemail.com',
'username' => 'sampleusername',
'password' => '12345'
)));
?>
我想知道我的代码有什么问题,如果你给我改进的提示,我会更感激。
答案 0 :(得分:-1)
下面的代码将使你的例子工作,如果你仍然想要使用foreach,你需要在它之后放回 就像评论指出的那样,您需要使用预准备语句或某些库来构建查询。
<?php
class User {
public static function insert($table, $table_fields = array()) {
if(count($table_fields)) {
return "INSERT INTO $table ('".implode("','",array_keys($table_fields))."')
VALUES ('".implode("','",$table_fields)."')";
}
return false;
}
}
$connect = mysqli_connect('localhost', 'root', '', 'sample');
mysqli_query($connect, User::insert('users', array(
'name' => 'Sample Name',
'email' => 'samplename@samplemail.com',
'username' => 'sampleusername',
'password' => '12345'
)));