Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mycode上的BUG我花了几个小时找不到问题所在_Php_Sql - Fatal编程技术网

Php mycode上的BUG我花了几个小时找不到问题所在

Php mycode上的BUG我花了几个小时找不到问题所在,php,sql,Php,Sql,您好,请查看此代码, 我正在使用此代码更新当前项目, $current_project_id使用“我正在获取要编辑的当前项目” 我已经检查了数据以发布变量,我在执行echo语句时得到了它。 当我使用对象将其传递给类函数时,可能会出现一些问题 另外:如果您在我的代码中发现一些安全问题,将不胜感激:) 用户端: <?php $current_project_id = (int)$_GET["pid"]; //Getting current project to Update from

您好,请查看此代码, 我正在使用此代码更新当前项目, $current_project_id使用“我正在获取要编辑的当前项目” 我已经检查了数据以发布变量,我在执行echo语句时得到了它。 当我使用对象将其传递给类函数时,可能会出现一些问题

另外:如果您在我的代码中发现一些安全问题,将不胜感激:)

用户端:

<?php 
    $current_project_id = (int)$_GET["pid"]; //Getting current project to Update from URL parameter.

    $currentproject = $touchObj->get_projects_by_id($current_project_id); // Using  project id to update, we are taking all project data.
?>


<?php
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if(isset($_POST['project_name']) && isset($_POST['project_location'] )) { 

    include('inc/handleUpload.php'); // Image uplaod class
    $up->config('20000000','jpg,gif,png,pdf,txt,doc,docx,xls,xlsx,zip,rar');
    $up->upload('project_file','xxxxxxxxxxxxxxxxxxxxxxxxx/'); //Server file location for upload folder.


    $project_investor_id = implode(",",$_POST["project_investor_id"]); // Our table field store data as comma seperated separated

    $project_name = mysql_real_escape_string($_POST['project_name']);

    $project_location = mysql_real_escape_string($_POST['project_location']);

    $project_phase = mysql_real_escape_string($_POST['project_phase']);

    $project_capital = mysql_real_escape_string($_POST['project_capital']);

    $project_total = mysql_real_escape_string($_POST['project_total']);

    $project_notes = mysql_real_escape_string($_POST['project_notes']);

    $file = $up->fileInfo['fname'];



    $touchObj->update_project(
        $current_project_id,
        $project_investor_id,
        $project_name, 
        $project_location,
        $$project_phase,
        $project_capital,
        $project_total,
        $project_notes,
        $file
        );
}
else 
{

    echo '<div class="alert alert-info"><h6>Please fill datas...</h6></div>';
}

}
?>  

我这个特殊类的函数:

 public function update_project($project_id, $project_investor_id, $project_name, $project_location, $project_phase, $project_capital, $project_total, $project_notes, $file){

    $result = mysql_query("UPDATE project_table SET 
    project_investor_id = $project_investor_id, 
    project_name = $project_name,    
    project_location = $project_location,
    project_phase = $project_phase,
    project_capital = $project_capital,
    project_total = $project_total,
    project_notes = $project_notes,
    project_file = $file
    WHERE project_id =$project_id");

    if($result) {
    echo '<div class="alert alert-success"><h6>Project updates... Do not refresh window...</h6></div>';
    }
    else {
    echo '<div class="alert alert-error"><b>Some error while updating the project. Please try again...</b></div>';
    }

}
公共功能更新项目($project\u id、$project\u investor\u id、$project\u name、$project\u location、$project\u phase、$project\u capital、$project\u total、$project\u notes、$file){
$result=mysql\u查询(“更新项目\u表集
project\u investor\u id=$project\u investor\u id,
project\u name=$project\u name,
项目位置=$项目位置,
项目阶段=$项目阶段,
project_capital=$project_capital,
项目总数=$项目总数,
项目注释=$项目注释,
项目文件=$file
其中project_id=$project_id”);
如果($结果){
回显“项目更新…不刷新窗口…”;
}
否则{
回显“更新项目时出现错误。请重试…”;
}
}
结果: 更新项目时出现错误。请再试一次

我无法使用此功能更新数据。请修改它并让我知道我遗漏了什么?有什么想法吗


非常感谢您抽出宝贵的时间

我非常确定基于字符的字段将需要用
'
标记包围,例如:

project_notes = '$project_notes',
而不是:

project_notes = $project_notes,

您应该研究术语“SQL注入”,看看为什么将用户输入的值硬塞进查询中是个坏主意。他们所要做的就是以某种方式进入

”,工资=工资*1.5,项目注释=实际项目注释

进入
$project\u notes
文本输入框(或您正在使用的任何内容),您将进入一些有趣的时间


参数化查询更安全。

您需要为数据类型为varchar或text的字段的值添加撇号。。例如;project_name=$project_name应该是project_name='$project_name',是的,它可以工作。。。。我只是错过了这些:((什么…代码呢?有什么安全问题吗?SQL注入?mysql\u real\u escape\u字符串对于SQL注入来说足够了。只要确保你有一个活动的DB连接,它就可以工作。你说的活动DB连接是什么意思?我在我的主类的构造函数中有一个数据库连接。这只是必需的吗?是的,很好。通过活动DB连接连接我的意思是,你应该连接到数据库,以便能够使用mysql\u real\u escape\u string();如果你没有它,那么它对你不起作用,相反,它会给出一个错误。我在这里是新手;)您好,我正在使用它向数据库输入数据?只有管理员可以使用这些区域?有问题吗?@Banna360,在不知道您的设置的全部范围的情况下,我不能发表评论,只能说这是应该签出的内容。即使管理员也可以攻击您:-)