gpt4 book ai didi

php - 类内的Mysqli错误

转载 作者:行者123 更新时间:2023-11-29 01:27:35 25 4
gpt4 key购买 nike

我不太确定如何在类内使用mysqli,因为我习惯于过程式编程,但我知道OOP的好处。所以我试图在我的类中使用mysqli创建一个update函数,但它似乎不起作用。我也不知道如何让它回显错误。它只是告诉我:
mysqli_error()期望参数1为mysqli
这就是目标:

$mysqli = new mysqli('localhost', 'root', '', 'ams');
$part = new Part($mysqli);

这是我的课:
class Part {

protected $mysqli;

// Editable Part table titles
protected $editable = array('Desc', 'SDQty', 'IAQty', 'IsActive');


function __construct($mysqli) {
$this->mysqli = $mysqli;
}


function update($data = array(), $partID) {

$r_errors = 0;

// Data Arrays
$updateArray = array();

// Loop Though all the column titles
foreach ( $data as $column => $value ) {

// If the column value is set
if ( ( isset($column) && !empty($column) ) && ( isset($value) && !empty($value) ) ) {

// If the item to be updated is allowable from the allowable array || add it to the column array
if ( in_array($column, $this->editable) ) {
$updateArray[] = "$column = $value";
}

}

} // End of foreach loop


// Convert Data Arrays to strings
$updateData = implode(', ', $updateArray);

// Create the SQL string
$_query = "UPDATE parts WHERE PartID = $partID SET $updateData";
$result = $this->mysqli->query($_query);

if ( !$result ) {
echo mysqli_error($result);
}
}

它不会运行查询,我是一个初学者在这个面向对象的php和mysql,所以任何帮助是非常感谢。

最佳答案

您的查询错误,而不是:

UPDATE parts WHERE PartID = $partID SET $updateData;

它应该是(注意事物的顺序):
UPDATE parts SET column_name = 'column_data' WHERE PartID = $partID;

查看 UPDATE Syntax了解更多信息。
关于错误:
mysqli_error()期望参数1为mysqli
因为 $mysqli是保存mysqli的变量,所以应该使用这个变量:
echo mysqli_error($mysqli);

注:我不知道这些数据是从哪里来的,但如果是用户输入的,你一定要看看 How can I prevent SQL-injection in PHP?

关于php - 类内的Mysqli错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com