php将数据从fetch数组插入到5.4版的其他表中

时间:2014-10-18 05:05:44

标签: php sql-server odbc

我已经在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>";
}

提前感谢。

2 个答案:

答案 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注入)。如果那个不可用,你至少需要在将数据连接到字符串之前转义数据。