INSERT INTO包含变量名的数据库

时间:2012-11-01 07:50:25

标签: php mysql variables parameter-passing

我已经以$login_clients的形式创建了一个MySQL数据库,其中$login是一个php变量,具体取决于用户登录。我试图插入此数据库,但无法使用该变量调用它。任何帮助是极大的赞赏!这是我的代码:

$login = clean($_POST['login']);
require_once('user-config.php');
//Connect to mysql server
$link2 = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link2) {
    die('Failed to connect to server: ' . mysql_error());
}

//Select database
$db = mysql_select_db(DB_DATABASE);
if(!$db) {
    die("Unable to select database");
}
//Create INSERT query
$qry2 = "INSERT INTO `{$login}_clients` (AgentClients) VALUES('$login')";
$result = @mysql_query($qry2);
if($result2) {
    header("location: client-register-success.php");
    exit();
}else {
    die("Query failed");
}

4 个答案:

答案 0 :(得分:1)

使用此

INSERT INTO `{$login}_clients` (AgentClients) VALUES('$login')

意味着你在每个客户端的新表中插入行,我想它不存在,是你想要的吗?例如,假设有三个客户端登录,比如ABC,现在您的查询就像

INSERT INTO `a_clients` (AgentClients) VALUES('$login')

INSERT INTO `b_clients` (AgentClients) VALUES('$login')

INSERT INTO `c_clients` (AgentClients) VALUES('$login')

所以这不是正确的方法,因为在三个不同的表中插入三行实际上不存在

答案 1 :(得分:0)

  1. 什么是清洁功能? PHP没有这样的功能。如果它的用户定义,这个函数内部是什么。

    $ login = clean($ _ POST ['login']);

  2. 你使用过$result2。但是,你已经分配了$result = @mysql_query($qry2); 这会给出错误。

    if($result2) { header("location: client-register-success.php"); exit(); }else { die("Query failed"); }

答案 2 :(得分:0)

什么是clean()函数在做什么?为安全起见,请考虑使用sprintf()和mysql_real_escape_string()。

$login = clean($_POST['login']); /* What is clean() doing? */
require_once('user-config.php');
//Connect to mysql server
$link2 = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if(!$link2) {
    die('Failed to connect to server: ' . mysql_error());
}

//Select database
$db = mysql_select_db(DB_DATABASE);
if(!$db) {
    die("Unable to select database");
}
//Create INSERT query
$qry2 = sprintf("INSERT INTO `{$login}_clients` (AgentClients) VALUES('%s')", $login);

$result = @mysql_query($qry2);
if($result2) {
    header("location: client-register-success.php");
    exit();
}else {
    die("Query failed");
}

答案 3 :(得分:0)

所有mysql_XXX函数都使用可选的链接说明符参数。它默认为使用mysql_connect()打开的最后一个链接,但是为了避免在打开多个链接时可能出现混淆,您应该明确指定它。尝试将此参数添加到您的调用中,看看它是否解决了问题。

此外,不推荐使用mysql_XXX函数。你应该使用mysqli或PDO。然后你不能遇到这个问题,因为这些API的链接参数不是可选的。