这就是我想要实现的目标: 我正在为学校学习OOP而且我已经注册了东西.... 它正在工作,但很多是硬编码的,我想制作一个通用的插入功能 其作用类似$ class->插入“1,2,3”,“foo,bar,thing” 它会将foo插入1 bar进入2并将其插入3 这里出现了问题:我不知道如何将我的PHP数组转换为SQL变量 因为我不知道我的PHP数组中有多少项。 (由于爆炸)
到目前为止,这是我的代码:
<?php
class database
{
static protected $_connection;
public function __construct($host, $dbname, $username, $password)
{
self::$_connection = new PDO("mysql:host=" . $host . ";dbname=" . $dbname, $username, $password);
self::$_connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return self::$_connection;
}
public function insert($tablename, $columns, $values)
{
$exploded = explode(", ", $values);
$valuenumber = NULL;
$string = NULL;
$teller = 0;
$query = self::$_connection->prepare('INSERT INTO gebruikers (:naam) VALUES ');
foreach ($exploded as $array) {
$query->bindparam(":value" . $valuenumber, $array);
$valuenumber++;
}
for ($i = $valuenumber; $i > 0; $i--) {
$string .= ", :value" . $teller;
$teller++;
// alles wordt in een string gezet: ":value, :value1, :value2
}
$stringarray = explode($string, ", ");
$query->execute(array(
'naam' => $teller
));
}
}
$client = new database("localhost", "oop", "root", "");
$client->insert("gebruikers", "naam", "test");
我很抱歉,如果它有点乱,而且缺乏评论 我是新手。
有人可以帮我一点吗? 感谢,
G3。
答案 0 :(得分:1)
public function insert($table, $columns, $values)
{
// make sure we have the same amount of keys and values
if(count($columns) !== count($values)){
return false;
}
$query = self::$_connection->prepare('INSERT INTO ' . $table . ' (' . implode(',', $columns) . ') VALUES (:' . implode(',:', $columns) . ')');
$index = 0;
foreach($columns as $column){
$query->bindparam(":" . $column . $values[$index++]);
}
}
如果我是你,我会分别通过$columns
和$values
,只需传递一个键=&gt;对数组如:
array('id' => 1, 'name' => 'new name');
我知道这是一个学习过程,你可以在这里重新发明轮子。查看doctrine等库。