如何在PHP中插入带有select语句的行?

时间:2016-08-10 04:44:11

标签: php mysql

我在使用PHP插入时遇到问题。

  • 该语句在MYSQL中正常运行
  • 主要问题在于PHP中的Select语句。
  • 我检查数据库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语句。

由于

2 个答案:

答案 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"));