我在代码中为每个id或变量重复了这三个语句。
$firstname_sql = $db->sql_query('SELECT column FROM table WHERE id = 1');
$lastname_sql = $db->sql_query('SELECT column FROM table WHERE id = 2');
etc..
$firstname_row = $db->sql_fetchrow($firstname_sql);
$lastname_row = $db->sql_fetchrow($lastname_sql);
etc..
$template->assign_var('FIRSTNAME', $firstname_row['variables'];
$template->assign_var('LASTNAME', $lastname_row['variables'];
etc..
我已经尝试过选择列数,然后在for循环中使用它,但是如果没有更多的代码,它最终会得到尽可能多的代码。
我为此使用了一个表,它看起来像这样:
module_id, int, primarykey
form_id, int, primarykey
form_name, varchar
active, int
我选择的列是活动的,id是form_id。我用它来查看哪些表格是活动的,哪些不是。
答案 0 :(得分:0)
有一种方法可以将两个查询作为一个执行,并获取一个对象而不是两个。你应该使用参数化的查询,但是对于概念验证,我会以你的查询为基础
$query = $db->sql_query('SELECT table1.column AS firstName, table2.column AS secondName
FROM table table1, table table2
WHERE table1.id = 1
AND table2.id = 2');
$names = $db->sql_fetchrow($query);
$template->assign_var('FIRSTNAME', $names['firstName'];
$template->assign_var('LASTNAME', $names['lastName'];
答案 1 :(得分:0)
由于两个值都在同一个表中,存储为实体,我将使用以下技巧: (一个声明)
SELECT max(x.first)AS firstname,max(x.last)AS lastname FROM( SELECT列AS首先,null AS最后FROM表WHERE id = 1 全联盟 SELECT null AS首先,列AS最后FROM表WHERE id = 2 )x
我是从头开始写的,所以没有测试过。但它应该工作。结果将是一个整齐的行,其中firstname和lastname作为该行中的单独字段。
答案 2 :(得分:0)
好吧,这就是我最终完成它的方式。
我创建了一个带有id和占位符(模板变量)参数的函数。
function activeForm($id, $placeholder) {
$active = $db->sql_fetchrow($db->sql_query('SELECT column FROM table WHERE id = ' . $id));
$template->assign_var($placeholder, $column['column'];
}
然后我只是调用函数
activeForm(1, 'FIRSTNAME');
这很简单。
答案 3 :(得分:-1)
根据您的问题,我猜测您正在考虑准备好的陈述,或者 - 如何正确地参数化您的查询。
使用PDO建立与MySQL的连接:
$dbh = new PDO('mysql:host='.HOST.';dbname='.DATABASE,USERNAME,PASSWORD);
它,连接已建立,您可以重用$dbh
来执行查询,例如从表用户获取结果,只需要两行代码。
$sth = $dbh->query('SELECT id,name,email FROM users');
$user = $sth->fetch(PDO::FETCH_ASSOC);
现在$user
将所有值作为关联数组提取。
要将值插入数据库,您需要执行以下操作。
$sth = $dbh->prepare('INSERT INTO users(name,email) VALUES(:name, :email)');
$sth->bindParam(':name', 'My Name');
$sth->bindParam(':email', 'email@email.com');
$sth->execute();
上面的代码使用了命名占位符,这样PDO可以让您远离许多漏洞,因为它可以让您远离MySQL注入。为了让你开始看看netttus的这个教程,他们已经很好地解释了这一点,本文将解释你所有关于PDO的困境