php 将数据从一个数据库复制到同一服务器上的另一个数据库时出现错误消息[已关闭]

qxsslcnc  于 2023-03-11  发布在  PHP
关注(0)|答案(1)|浏览(118)

**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。

这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
20小时前关门了。
Improve this question
我已经写了一个脚本来复制客户端数据从我们的旧系统到新系统,它给我上面的错误消息。
我知道这个脚本不是很安全,但是它位于内部网络上,通过防火墙规则不对互联网开放。我非常密切地监视脚本的使用(当我让它工作时,哈哈)
完整错误消息
致命错误:未捕获的mysqli_sql_异常:SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,在sender.php:16第1行的'from cic_remus.contacts where(id =' 127 ')'附近使用正确的语法堆栈跟踪:第0个发件人.php(16):mysqli_query()#1 {main}在第16行的sender.php中抛出
我已经看过了代码,一切似乎都是正确的,似乎看不出问题是什么。
这两个表是相同的,使用相同版本的PHP 8.2,并且位于相同的服务器上。
我知道我可以只导出和导入,但我们是手动审查哪些信息,这是我们最简单的方法。
代码;

<?php

$databaseHost = 'localhost'; 
$databaseName = ''; 
$databaseUsername = ''; 
$databasePassword = '';

$mysqli = mysqli_connect($databaseHost, $databaseUsername, $databasePassword, $databaseName); 
 
$id = $_GET['id'];


$sql="select from cic_remus.contacts where (id='$id');"; 

      $res=mysqli_query($mysqli,$sql);

      if (mysqli_num_rows($res) > 0) {
        // output data of each row
        $row = mysqli_fetch_assoc($res);
        if($id==$row['id'])
        {
echo "Already copied"; 
                
        }

       } else{

 
   
$query=mysqli_query($mysqli,"INSERT INTO cic_kenobi.contacts (status, image, datemovedin, learner_id, title, name, last_name, sex, dob, house_number, address_line_one, address_line_two, city_town, country, postcode, postcode_enrolment, phone, mobile_number, email_address, ethnic_origin, ethnicitys, health_problem, health_disability_problem_if_yes, lldd, education_health_care_plan, health_problem_start_date, education_entry, emergency_contact_details, employment_paid_status, employment_date, unemployed_month, education_training_prior, education_claiming, claiming_if_yes, household_situation, mentor, intext)

SELECT status, image, datemovedin, learner_id, title, name, last_name, sex, dob, house_number, address_line_one, address_line_two, city_town, country, postcode, postcode_enrolment, phone, mobile_number, email_address, ethnic_origin, ethnicitys, health_problem, health_disability_problem_if_yes, lldd, education_health_care_plan, health_problem_start_date, education_entry, emergency_contact_details, employment_paid_status, employment_date, unemployed_month, education_training_prior, education_claiming, claiming_if_yes, household_situation, mentor, intext

FROM cic_remus.contacts WHERE id =$id");

echo "Successfully copied"; 

       }
       
?>
ct2axkht

ct2axkht1#

查看您的脚本,似乎缺少要从查询中选择的列。
根据使用情况,我认为您只需要获取一列,即id,因此可以尝试:

$sql="select `id` from cic_remus.contacts where (id='$id');";

编辑:注意这个摘录来自OP的问题,这里有一个SQL注入漏洞,所以你可能想参数化这个查询(即不要信任$id,它来自一个用户)。
此外,由于您无论如何都是按id进行过滤的,因此可以通过删除id是否相同的额外检查(如果有结果,它总是相同的)来简化一点。
一般来说,MySQL错误通常会给予您以问题 * 开头 * 的查询块,因此在本例中,线索是问题要么与单词from有关,要么就在它之前。

相关问题