Попытка синхронизировать таблицы из SQL Server и MySQL;ошибка запроса при попытке выбрать все данные из MySQL с помощью оператора where из массива - PullRequest
0 голосов
/ 22 апреля 2019

Я пытаюсь синхронизировать идентичные таблицы из SQL Server в MySQL через PHP.Тем не менее, я продолжаю работать с ошибкой «mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, дано bool».Я знаю, что эта конкретная ошибка дает мне понять, что с моим запросом что-то не так, но я пробовал все известные мне исправления (меняя имена столбцов не на ключевые слова, следя за тем, чтобы имена не были введены неправильно, и т. Д.), И все равно это не так.за работой.Вот код:

<?php

$serverName = "<my_server_name>";
$connectionInfo_mssql = array("Database"=>"<db_name>", "CharacterSet"=>"UTF-8");

$conn_mssql = sqlsrv_connect($serverName, $connectionInfo_mssql);
$conn_mysql = new mysqli("localhost", "<user>", "<pass>", "<db_name>");

//SELECT FROM SQL SERVER DB
$mssql_array = array();
$ms_sql = "SELECT * FROM dumma";
$mssql_query = sqlsrv_query($conn_mssql , $ms_sql);

while($row = sqlsrv_fetch_array($mssql_query))
{

  $mssql_array[] = array('descript' => $row['descript'], 'codee' => $row['codee'], 'classification' => $row['classification'], 'id' => $row['id'], 'remark' => $row['remark']);

}

foreach($mssql_array as $key => $value)
{

   //SELECT FROM MySQL DB
   $my_sql = " SELECT * FROM dumma WHERE descript ='".$value['descript']."' AND codee = '".$value['codee']."' AND classification = '".$value['classification']."' AND id = '".$value['id']."' AND remark = '".$value['remark']."' ";

   if ($my_sql) {
   $mysql_query = mysqli_query($conn_mysql , $my_sql);
   $num_rows = mysqli_num_rows($mysql_query);
}

if (!$my_sql->query("SET a=1")) {
    printf("Errormessage: %s\n", $my_sql->error);
}

   $mysql_query = mysqli_query($conn_mysql , $my_sql);
   $num_rows = mysqli_num_rows($mysql_query);

   if ($num_rows == 0)
   {
     //INSERT INTO MySQL DB
     $sql = "INSERT INTO dumma VALUES ('".$value['descript']."', '".$value['codee']."', '".$value['classification']."', '".$value['id']."', '".$value['remark']."')";
     $sql_query = mysqli_query($conn_mysql, $sql);
   }
}

echo "dumma Table MySQL updated!"."<br>";
echo "<a href='table_updater.php'>Go back to updater</a>";

?>

Ошибка возникает в этой строке:

$my_sql = " SELECT * FROM dumma WHERE descript ='".$value['descript']."' AND codee = '".$value['codee']."' AND classification = '".$value['classification']."' AND id = '".$value['id']."' AND remark = '".$value['remark']."' ";
   $mysql_query = mysqli_query($conn_mysql , $my_sql);
   $num_rows = mysqli_num_rows($mysql_query);

Часть таблицы данных и столбца данных:

https://i.imgur.com/20cFugp.png https://i.imgur.com/ucebUao.png (извините, у меня недостаточно представителей, чтобы публиковать его здесь напрямую)

По некоторым причинам, это ТОЛЬКО столбец "дескриптор", который вызывает проблемы.Я попытался удалить их все по одному, и когда я удалил столбец «дескриптор» из синтаксиса, я не получил ошибку (к сожалению, это вызывает огромные проблемы, потому что вместо синхронизации двух таблиц, он удваивает содержимоевместо таблицы MySQL).Кроме того, я использовал точно такой же код с другими таблицами (только изменяя переменные), и они отлично работали.

Любые идеи очень ценятся!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...