나는 블로그 출판을 위해 CRUD 시스템을 만들고 있지만 좀 이상합니다. 다른 개발자 (더 많은 경험을 가진)가 내 코드를 살펴 보았고 그에게도 괜찮 았지만이 오류가 발생했습니다 (주의 : C에서 객체가 아닌 속성을 얻으려고합니다. : \ xampp \ htdocs \ genial \ painel \ inc \ database.php on line 32 ) 계속 표시됩니다.
내 데이터베이스 코드 :
<?php
mysqli_report(MYSQLI_REPORT_STRICT);
function open_database() {
try {
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
return $conn;
} catch (Exception $e) {
echo $e->getMessage();
return null;
}
}
function close_database($conn) {
try {
mysqli_close($conn);
} catch (Exception $e) {
echo $e->getMessage();
}
}
function find( $table = null, $id = null ) {
$database = open_database();
$found = null;
try {
if ($id) {
$sql = "SELECT * FROM" . $table . " WHERE id = " . $id;
$result = $database->query($sql);
if ($result->num_rows > 0) {
$found = $result->fetch_assoc();
}
}
else {
$sql = "SELECT * FROM " . $table;
$result = $database->query($sql);
if ($result->num_rows > 0) {
$found = $result->fetch_all(MYSQLI_ASSOC);
}
}
} catch (Exception $e) {
$_SESSION['message'] = $e->GetMessage();
$_SESSION['type'] = 'danger';
}
close_database($database);
return $found;
}
function find_all( $table ) {
return find($table);
}
function save($table = null, $data = null) {
$database = open_database();
$columns = null;
$values = null;
//print_r($data);
foreach ($data as $key => $value) {
$columns .= trim($key, "'") . ",";
$values .= "'$value',";
}
$columns = rtrim($columns, ',');
$values = rtrim($values, ',');
$sql = "INSERT INTO " . $table . "($columns)" . " VALUES " ($values);";
try {
$database->query($sql);
$_SESSION['message'] = 'Registro cadastrado com sucesso.';
$_SESSION['type'] = 'success';
} catch (Exception $e) {
$_SESSION['message'] = 'Nao foi possivel realizar a operacao.';
$_SESSION['type'] = 'danger';
}
close_database($database);
}
function update($table = null, $id = 0, $data = null) {
$database = open_database();
$items = null;
foreach ($data as $key => $value) {
$items .= trim($key, "'") . "='$value',";
}
$items = rtrim($items, ',');
$sql = "UPDATE " . $table;
$sql .= " SET $items";
$sql .= " WHERE id=" . $id . ";";
try {
$database->query($sql);
$_SESSION['message'] = 'Registro atualizado com sucesso.';
$_SESSION['type'] = 'success';
}
catch (Exception $e) {
$_SESSION['message'] = 'Nao foi possivel realizar a operacao.';
$_SESSION['type'] = 'danger';
}
close_database($database);
}
유휴 상태가 아니라면 죄송합니다.
코드에서 "FROM"뒤에 공백을 넣습니다.
$sql = "SELECT * FROM" . $table . " WHERE id = " . $id;
오류는 동일하지만 36 행에서 다음을 알고 있습니다.
if ($result->num_rows > 0) {
$found = $result->fetch_all(MYSQLI_ASSOC);
}
36 행의 코드를 다음과 같이 변경했습니다.
$if (result = $database->query($sql)) {
오류가 사라지고이 질문과 관련 이 없는 다른 문제가 발생했습니다.
이 질문이로 닫히지 않은 경우 off-topic -> typo generated
허용 가능한 답변을 제공하는 것이 좋습니다.
FROM
와 사이에 공백을 추가하십시오 .$table
SELECT
새 코드는 다음과 같습니다.
$sql = "SELECT * FROM `$table`";
if ($id) {
// assuming id has been properly sanitized
$sql .= " WHERE id=$id"; // concatenate with WHERE clause when appropriate
}
if ($result = $database->query($sql)) { // only continue if result isn't false
if ($result->num_rows) { // only continue if one or more row
$found = $result->fetch_all(MYSQLI_ASSOC); // fetch all regardless of 1 or more
}
}
$sql = "INSERT INTO " . $table . "($columns)" . " VALUES " ($values);";
큰 따옴표가 너무 많습니다. Stack Overflow가 문자를 어떻게 강조하는지 알 수 있습니다. 구문을 정리할 수 있다고 말할 수 있지만 궁극적으로 스크립트를 스크랩하고 준비된 문을 구현하는 것이 가장 좋습니다.이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다