我已经在PHP 5.4中迁移到了IIS 8。我正在尝试从表中收集数据并将它们插入到另一个表中,我知道我的代码是正确的,但似乎无法正常工作,可能是因为php版本,任何人都可以帮助我吗?
这是我的代码
$query = odbc_exec($conn, "SELECT * FROM member");
while($rows = odbc_fetch_array($query)) {
$querystring = "INSERT INTO oldusers (username, password, regdate) VALUES ('$rows['userid']', '$rows['passwd']', '$rows['registdate']')";
$query2 = odbc_exec($conn, $querystring);
odbc_free_result($query2);
//echo $rows['userid']." ".$rows['passwd']." ".$rows['registdate']."<br>";
}
提前感谢。
答案 0 :(得分:1)
而是尝试逐个插入记录,最好插入如下:
INSERT INTO oldusers (username, password, regdate) SELECT userid,passwd,registdate FROM member
了解更多信息:http://dev.mysql.com/doc/refman/5.5/en/insert-select.html
答案 1 :(得分:0)
您将$rows['passwd']
置于双引号字符串中。相反,你应该这样做:
$str = "some sql $rows[passwd] rest of sql"; // notice the absence of single quotes
或:
$str = "some sql {$rows['passwd']} rest of sql";
或(我认为这种方式最具可读性):
$str = 'some sql' . $rows[passwd] . ' rest of sql';
如果您的专栏包含文字,则需要在必要时添加周围的单引号。
说完了所有这些,你应该使用参数化查询(如果你的数据库支持它),因为它更安全(从SQL注入)。如果那个不可用,你至少需要在将数据连接到字符串之前转义数据。