17. december 2020 - 21:03
Der er
13 kommentarer og 1 løsning
Data fra mssql til mysql
Hej Jeg har følgende code <?php include 'conf/mssqlConnect.php'; include 'conf/mysqlConnect.php'; $sql = "Select * From COUNTRIES"; $stmt = sqlsrv_query($conn, $sql); if( sqlsrv_fetch( $stmt ) === false) { die( print_r( sqlsrv_errors(), true)); } while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) { $code = $row['COUNTRY_CODE']; $Name = $row['NAME']; $sqlcountry = "INSERT INTO country (Code,Name) VALUES ('$code','$Name')"; mysqli_query($myconn,$sqlcountry); } ?> Den virker fint, men den tager ikke alle liner med fra mssql og insert til mysql Der 263 liner i mssql og i mysql er der 262, det er line 1 den ikke taget med over, nogen som kan give en god grund til det ?
Annonceindlæg fra Infor
17. december 2020 - 21:41
#1
mysqli_query($myconn,$sqlcountry); -> mysqli_query($myconn,$sqlcountry) or die(mysqli_error($myconn));;
17. december 2020 - 22:14
#2
Den kommer med denne fejl Incorrect string value: '\xC5land ...' for column 'Name' at row 1
17. december 2020 - 22:25
#3
Og det er det eneste navn med danske bogstaver? Kan det være fordi at data er i ISO-8859-1/IsoLatin1/CP-1252 og data skal være i UTF-8?
17. december 2020 - 22:38
#4
MSSQL er i Latin1_general Accent-sensitive Width-sensitive Min mysql er i latin1_general_ci og det er mine tabler også
17. december 2020 - 22:54
#5
Hjælper en: mysqli_set_charset ($myconn, 'latin1'); ?
17. december 2020 - 23:04
#6
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Ivoire')' at line 1
17. december 2020 - 23:05
#7
<?php include 'conf/mssqlConnect.php'; include 'conf/mysqlConnect.php'; $sql = "Select * From COUNTRIES"; $stmt = sqlsrv_query($conn, $sql); if( sqlsrv_fetch( $stmt ) === false) { die( print_r( sqlsrv_errors(), true)); } while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) { $code = $row['COUNTRY_CODE']; $Name = $row['NAME']; $sqlcountry = "INSERT INTO country (Code,Name) VALUES ('$code','$Name')"; mysqli_query($myconn,$sqlcountry)or die(mysqli_error($myconn)); } mysqli_set_charset($myconn,'latin1'); ?>
17. december 2020 - 23:09
#8
De står som nvarchar i mssql har det noget at sige ?
17. december 2020 - 23:18
#9
mysqli_set_charset($myconn,'latin1'); skal op før loop med INSERT
17. december 2020 - 23:19
#10
Côte d'Ivoire har en single quote. Så du skal nok skifte til prepare og parametre!!
18. december 2020 - 08:41
#11
Det er forbi der er ' i name, hvordan kommer jeg lige uden om det ?
18. december 2020 - 14:29
#12
Brug prepare og parameters.
03. januar 2021 - 22:20
#13
<?php include 'conf/mssqlConnect.php'; include 'conf/mysqlConnect.php'; $sql = "Select * From COUNTRIES"; $stmt = $conn->query($sqlNorthSeaLocation); while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { $Name = $row['code']; $latitude = $row['name']; $new_name = str_replace("'", "''", "$Name"); $sqlcountry = "INSERT INTO sei_site (name,code) VALUES ('" . $new_name . "','" . $code . "'')"; mysqli_query($myconn,$sqlcountry) or die(mysqli_error($myconn)); } Det virker som det skal
04. januar 2021 - 01:47
#14
str_replace for at fordoble single quotes svarer til at montere sin kofanger med gaffa tape. Prepare og parameters er den rigtige loesning.
Vi tilbyder markedets bedste kurser inden for webudvikling