我在PHP中插入select时遇到了麻烦。
- 语句在MYSQL中运行良好
- 主要问题是在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
中使用select语句和insert语句。
谢谢
如何使用select语句插入行
你不能。INSERT
表示添加一行。SELECT
是返回行。这是两个互斥的操作。
你的问题类似于:我如何从一页中读取新行?
编辑:根据你下面的评论,我想我明白了:你正试图用select
操作的信息insert
记录。解决方案是将其全部放在一个查询中,并使用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
您可能需要调整它以适应您的应用程序。看一看这篇文章
你不能这样使用select和insert:-
$db->insert("test_user", array("login" => $userLogin, "rolename" => $db->query('SELECT role_name FROM "test" WHERE role_name = "manager"')));
你的select查询提供一个对象,从这个对象取role_name
的值。
$roleData = $db->query('SELECT role_name FROM "test" WHERE role_name = "manager"')
例如,如果您将角色名称分配给名为$role
的变量。使用$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"));