我在使用PHP插入时遇到问题。
rolename
是否插入了值对象$login
的”login“中,将”rolename“添加到另一个表中的值,该表存储默认的rolename,因此为select语句。
$db->insert(Common::prefixTable("roles_user"), array("login" =>
$userLogin, "rolename" => $db->query('SELECT REVERSE(SUBSTR(REVERSE(SUBSTR(REVERSE(SUBSTRING_INDEX(REVERSE(option_value),":",1)),2)),4)) FROM '. Common::prefixTable("option").' WHERE option_name = "RolesManager"')));
请帮我查一下如何在php
中使用带有insert语句的select语句。
由于
答案 0 :(得分:2)
如何使用select语句插入行
你做不到。 INSERT
是添加一行。 SELECT
是返回行。这是两个相互排斥的操作。
您的问题类似于:如何通过阅读页面来编写新行?
编辑:根据您在下面的评论,我想我明白了:您正在尝试insert
包含来自select
操作的信息的记录。解决方案是将所有内容放在一个查询中,并使用INSERT...SELECT
语法。你会做的事情如下:
INSERT INTO roles_user (login, rolename)
SELECT '$userLogin' as login, option_name as rolename
FROM option
WHERE ...; /*the condition to meet in option table to select option_name*/
LIMIT 1
您可能需要调整此选项以适合您的应用程序。看看this post.
答案 1 :(得分:1)
您不能使用select并以这种方式插入: -
$db->insert("test_user", array("login" => $userLogin, "rolename" => $db->query('SELECT role_name FROM "test" WHERE role_name = "manager"')));
您的选择查询提供了一个对象,该对象的值为role_name
。
$roleData = $db->query('SELECT role_name FROM "test" WHERE role_name = "manager"')
例如,如果您将角色名称分配给名为$role
的变量。使用此$角色插入。
$role = $roleData[0]['role_name'];
$db->insert("test_user", array("login" => $userLogin, "rolename" =>$role));
为什么要从查询中选择role_name
,因为您已经知道角色名称"manager"
,请使用直接查询: -
$db->insert("test_user", array("login" => $userLogin, "rolename" =>"manager"));