2014-10-18 39 views
0

我已經轉移到PHP 5.4中的IIS 8。我試圖從表中收集數據並將它們插入到另一個表中,我知道我的代碼是正確的,但似乎不工作,可能是因爲php版本,任何人都可以幫助我嗎?php從取數組插入數據到版本5.4上的其他表格

這裏是我的代碼提前

$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

我的代碼是不工作*意味着什麼?你有什麼錯誤嗎? – 2014-10-18 05:10:34

+0

請檢查我的編輯,這是我的概率是關於插入到其他表,我得到500內部服務器錯誤只導致它在IIS8 – CudoX 2014-10-18 05:11:56

回答

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注入)。如果不可用,您至少需要在將數據連接到字符串之前轉義數據。

+0

所以這是正確的? $ querystring ='INSERT INTO oldusers(username,password,regdate)VALUES('。$ rows ['userid']。','。$ rows ['passwd']。','。$ rows ['registdate'] 。 ')'; – CudoX 2014-10-18 05:20:01

+0

如果您的專欄存儲文本,那麼您需要用單引號將值包圍。另外請記住要逃避你的數據以避免SQL注入(並且,如果可能的話,改爲使用參數化查詢)。 – webbiedave 2014-10-18 05:24:47

+0

真棒,非常感謝這一點。 – CudoX 2014-10-18 05:28:11