使用面向对象的php更新mysqli函数中的查询

时间:2015-06-06 16:26:04

标签: php mysql mysqli

我正在使用php面向对象和mysqli。我在这个类中有类名Database.php我定义了一个函数名更新。 我做错了一些我认为这就是为什么它不能正常工作。当我用来运行点击更新然后数据检索表单,但当我尝试保存更新的表单时,它始终只更新我的数据库的第一列。功能代码如下:

if(isset($_POST['update'])){
    $id1 =  $_POST['id'];
    $name =  $_POST['name'];
    $city = $_POST['city'];
    $success=$DbQuery->update("record", array(" name " => $name ,"city" => $city)," id =".$id1);
    if($success){
       header("LOCATION:index.php");
    }else{
        echo "try again ";
    }

}

这是我之前尝试过的PHP代码

/visitors/owner-faq

你对更新功能有什么好的建议如何改进这个功能。实际上我是php面向对象的新手,所以建议我这方面的简单方法。感谢

1 个答案:

答案 0 :(得分:1)

问题在于您尝试将$value数组转换为$Update .= " ".$value." WHERE ".$where;中的字符串。你不能这样做。您必须在其上方的for循环中构造查询,而不是填充$value数组。无论哪种方式,您都不应该手动构建查询。您真的应该使用PDO::prepare()$mysqli::prepare()来防止漏洞。是的,如果你只是学习,那可能会觉得有点过分,但你应该从一开始就养成良好的习惯。

另外,修复您的格式。你的代码真的很难读。我建议阅读PSR standard(或任何广泛使用的PHP标准)并在代码中进行调整。再一次,可能觉得有点矫枉过正,但这是一个早起的好习惯。

这里有一个adapted version of your code供您轻松玩耍。如果在底部的CLI窗口中运行php index.php,则可以看到问题。