Я добавляю кнопку сохранения/обновления в нижней части моей формы редактирования на панели администратора. По какой-то причине, всякий раз, когда я вношу изменения в форму и щелкаю ее, она просто перезагружает страницу без внесенных изменений. Я также заметил, что только когда я пытаюсь запустить код из файла pages.php (стереосистеме и обновите из индекса затем щелкая страниц отлично) он говорит:SQL update query не сотрудничает
Неопределенная переменная: DBC в C: \ Users \ Jake \ Desktop \ Xampp \ HTDOCS \ jakefordsite \ админ \ контента \ pages.php на линии 12
Предупреждение: mysqli_query() ожидает параметр 1, чтобы быть MySQLi, нуль дано в C: \ Users \ Jake \ Desktop \ Xampp \ htdocs \ jakefordsite \ admin \ content \ pages.php в строке 12
Я могу избавиться от этой ошибки, объявив новую переменную $ dbc (databaseconnection) в pages.php, но у меня все еще есть такая же проблема, когда я обновляю данные формы.
PAGES.PHP:
<?php ## Page Manager ?>
<h2>Page Manager</h2>
<div class="col sidebar">
<ul>
<?php
$q = "SELECT * FROM pages ORDER BY name ASC";
$r = mysqli_query($dbc, $q);
if ($r)
{
while ($link = mysqli_fetch_assoc($r))
{
echo '<li><a href="?page=pages&id='.$link['id'].'">'.$link['name'].'</a></li>';
}
}
?>
</ul>
</div>
<div class="col editor">
<?php
if (isset($_POST['submitted']) == 1) {
$q = "UPDATE pages SET title='$_POST[title]', name='$_POST[name]', body='$_POST[body]', WHERE id = '$_POST[id]'";
$r = mysqli_query($dbc, $q);
}
if (isset($_GET['id'])) {
$q = "SELECT * FROM pages WHERE id = '$_GET[id]' LIMIT 1";
;
$r = mysqli_query($dbc, $q);
$opened = mysqli_fetch_assoc($r);
?>
<form action="?page=pages&id=<?php echo $opened['id'] ?>" method="post">
<p><label>Page title: </label><input type="text" size="30" name="title" value="<?php echo $opened['title']?>"></p>
<p><label>Page name:</label> <input type="text" size="30" name="name" value="<?php echo $opened['name']?>"></p>
<label>Page body: </label><br>
<textarea name="body" cols="30" rows="8"><?php echo $opened['body'] ?></textarea>
<input type="hidden" name="submitted" value="1"/>
<input type="hidden" name="id" value="<?php echo $opened['id'] ?>"/>
<p><input type="submit" name="submit" value="Save Changes"/></p>
</form>
<?php } ?>
</div>
index.php:
<?php
// Setup document:
include('config/setup.php');
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title><?php //echo $page_title; ?>JakeForDesign - Admin Panel</title>
<link rel="stylesheet" type="text/css" href="css/styles.css">
</head>
<body>
<div class="wrap_overall">
<div class="header"> <?php head(); ?> </div>
<div class="nav_main"> <?php nav_main(); ?> </div>
<div class="content"> <?php include('content/'.$pg.'.php'); ?> </div>
<div class="footer"> <?php footer(); ?> </div>
</div>
</body>
</html>
Setup.php
<?php
## Setup Document
// host(or location of the database), username, //password, database name
$dbc = @mysqli_connect('127.0.0.1', 'root', 'password', 'main') OR die ('Could not connect to the database because: '. mysqli_connect_error());
include('Functions/sandbox.php');
include('Functions/template.php');
if (isset($_GET['page']) == '')
{
$pg = 'home';
}
else
{
$pg = $_GET['page'];
}
$page_title = get_page_title($dbc, $pg);
?>
Может быть вы не нужно загружать подключение к базе данных для $ dbc – vijaykumar
Вы используете mysqli, который поддерживает параметризованные запросы. Почему вы выполняете строчную интерполяцию, которая позволяет SQL-инъекцию? – Barmar