我无法理解如何使用select语句应用插入查询:
我也经历过这个问题:
MySQL INSERT from a SELECT with PDO
但VALUES
部分在哪里?
就像我在Mysql中插入此查询一样,这里我也使用了值:
$db_conn->beginTransaction();
$query = $db_conn->prepare('INSERT INTO mytable (name, user_id) VALUES(:sname, :uid)');
foreach($UploadData AS $DataValue)
{
$query->execute(array(':sname' => $DataValue['Name'],':uid' =>$_SESSION['uid']));
}
$db_conn->commit();
我的座右铭是检查name
是否存在相同的uid
它不应该导入数据,否则它应该。但是价值观在哪里:/我是盲目的:P
EDIT1 :来自MySQL INSERT from a SELECT with PDO
如果没有提供VALUES
,此代码块将如何工作?
$sql_enc = '
INSERT INTO sessionid (enc_id, enc_pass, enc_date)
(SELECT AES_ENCRYPT(username, :aeskey), AES_ENCRYPT(pwd, :aeskey), DATE_ADD(NOW(), INTERVAL 15 SECOND) FROM users WHERE username = :username)
';
$res_enc = $pdo->prepare($sql_enc);
$res_enc->bindParam(':aeskey', $aeskey);
$res_enc->bindParam(':username', $username);
$res_enc->bindParam(':pwd', $username);
$res_enc->execute();
$res_enc = null;
答案 0 :(得分:1)
有两种有效的INSERT
语法:
INSERT
INTO `table` [(field1, field2)]
VALUES ( 'val1', 'val2' )
或者
INSERT
INTO `table` [(field1, field2)]
SELECT 'val1', 'val2'
所选列是您的值字段。
@comments: 更换: http://dev.mysql.com/doc/refman/5.5/en/replace.html
程序: http://dev.mysql.com/doc/refman/5.6/en/create-procedure.html
答案 1 :(得分:0)
您正在循环中定义参数:sname和:uid。 execute方法在执行这个方法之前使用params并将其“放入”查询中。
换句话说,在调用prepare()时会编译查询,并在调用execute()时应用参数。
修改强> 好的,我不明白。
查询包括一个“SELECT”部分,它给出要插入的值。使用SELECT时,您不能写“VALUES”,因为the documentation说:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE
col_name=expr
[, col_name=expr] ... ]