我正在使用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面向对象的新手,所以建议我这方面的简单方法。感谢
答案 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
,则可以看到问题。