我如何插入一行与选择语句在PHP


How do i insert a row with select statement in PHP?

我在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"));