2015-10-19 2 views
1

У меня плохое .. было неправильное имя.Таблица обновлений в php

Но он по-прежнему не обновляется, он говорит, что обновлено 0 записей. Это должно быть 1.

Это мой поле ввода:

<?php 
if($_SESSION['admin'] > 0) 
{ 

echo'<div id="registreer">'; 
echo'<div id="titel">update</div>'; 
echo'<form action="done.php" method="post">'; 
echo'<input type="text" name="regname" placeholder="username" /> '; 
echo'<input type="password" name="regpass" placeholder="password" />'; 
echo'<input type="text" name="regdbhost" placeholder="host" /> '; 
echo'<input type="text" name="regdbuser" placeholder="user" /> '; 
echo'<input type="text" name="regdbpass" placeholder="dbpass" /> '; 
echo'<input type="text" name="regdbname" placeholder="dbname" /> '; 
echo'<input type="text" name="regdbtable" placeholder="table" /> '; 
echo"<button type='submit' name='regsubmit' value='register'>"; 
echo'<p>UPDATE</p>'; 
echo'</button>'; 
echo'</form>  '; 
echo'</div>'; 
echo'<a href="hetwerkt.php">terug</a>'; 
} 

else if($_SESSION['admin'] < 1) 
{ 
header("Location: hetwerkt.php"); 
} 
?> 

При нажатии на кнопку UPDATE, он отправит вас в done.php

<?php 
session_start(); 
?> 

<?php 

$servername = "----"; 
$username = "----"; 
$password = "----"; 
$dbname = "----"; 

$name = mysql_real_escape_string($_POST['regname']); 
$pass = mysql_real_escape_string($_POST['regpass']); 
$regdbhost = $_POST['regdbhost']; 
$regdbuser = $_POST['regdbuser']; 
$regdbpass = $_POST['regdbpass']; 
$regdbname = $_POST['regdbname']; 
$regdbtable = $_POST['regdbtable']; 

$pass = crypt($pass,'$2a$09$anexamplestringforsalt$'); 
try { 
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
// set the PDO error mode to exception 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$sql = "UPDATE info SET regdbname='$regdbname' WHERE id='".$id."'"; 

// Prepare statement 
$stmt = $conn->prepare($sql); 

// execute the query 
$stmt->execute(); 

// echo a message to say the UPDATE succeeded 
echo $stmt->rowCount() . " records UPDATED successfully"; 
} 
catch(PDOException $e) 
{ 
echo $sql . "<br>" . $e->getMessage(); 
} 

$conn = null; 
?> 

И это показывает эту ошибку:

UPDATE info SET regdbname='test' WHERE id='' 
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'regdbname' in 'field list' 

Что я делаю неправильно? Моя таблица regdbname существует в информации. Почему сказывается, что имя regdbname не найдено?

Мой плохо это пользователь, а не информация

+4

тщательно проверить его имя столбца может иметь неправильное написание –

+1

Опубликовать свою структуру таблицы –

+0

И проверить правильность $ dbname. – Jens

ответ

3

У вас есть две проблемы:

1) Ваша таблица не имеет столбец regdbname. Проверьте, правильно ли указано имя столбца, если вы его неправильно опечатали.

2) $id установлен пустой. Вы не устанавливаете $id в любом месте.

+0

Мышь по ссылке, чтобы узнать, генерируется ли идентификатор. – Pupil

+0

Этот комментарий означает, что вы работаете с параметром 'register_globals', установленным в ON? И поэтому ожидать, что '$ id' будет автоматически существовать в вашем скрипте? – RiggsFolly

+0

Нет, это означает, что пользователь нажимает на ссылку где-нибудь, чтобы перейти на эту страницу. Он может проверить это в url. – Pupil

1

Обновленные записи - это 0. Это потому, что вы даже не определили значение для $ id.

ваш запрос как этот

UPDATE user SET regdbname='test' WHERE id='' 

поэтому ищет пустой идентификатор, у него нет ни она не обновлялась любой строки и возврата результата, как 0.

Смежные вопросы