2013-08-20 2 views
0

Я работаю над программой, которая обрабатывает HTML-код, созданный редактором WYSIWYG, и вставляет его в базу данных, а затем перенаправляет пользователя на завершенную страницу, которая считывает код из базы данных. Я могу вручную ввести код в phpmyadmin, и он работает, но в PHP-коде он не будет перезаписывать запись в столбце кода для указанного идентификатора. Я предоставил PHP-код, который поможет вам помочь мне. PHP не дает мне никаких ошибок синтаксического анализа. Что неверно в следующем коде?База данных SQL не вставляет данные?

<?php 
//POST VARIABLES------------------------------------------------------------------------ 
    //$rawcode = $_POST[ 'editor1' ]; 
    //$code = mysqli_real_escape_string($rawcode); 
    $code = 'GOOD'; 
    $id = "1"; 
    echo "$code"; 
//SQL VARIABLES------------------------------------------------------------------------- 
    $database = mysqli_connect("localhost" , "root" , "password" , "database"); 
//INSERT QUERY DATA HERE---------------------------------------------------------------- 
    $queryw = "INSERT INTO users (code) VALUES('$code') WHERE ID = '" . $id . "'"; 
    mysqli_query($queryw, $database); 
//REDIRECT TO LOGIN PAGE---------------------------------------------------------------- 
    echo "<script type='text/javascript'>\n"; 
    echo "window.location = 'http://url.com/users/" . $id . "/default.htm';\n"; 
    echo "</script>"; 
?> 
+0

Вы не проверяете ошибки запроса, используя http://php.net/mysql_error, и вы говорите обозревателю, чтобы он перенаправлялся от текущей страницы, поэтому, если бы были какие-либо ошибки, вы никогда не увидели бы их. Чтобы отлаживать, удалите перенаправление на мгновение –

+0

Я забыл об этом эхом «$ code»; в строке 4, чтобы убедиться, что код был POSTing правильно. – rn10950

+0

: Предупреждение: mysqli_query() ожидает, что параметр 1 будет mysqli, строка, указанная в C: \ Inetpub \ wwwroot \ edit \ edit_NEW.php в строке 13 – rn10950

ответ

4

Ваша проблема в том, что mysql INSERT не поддерживает WHERE. Изменить запрос на:

INSERT INTO users (code) VALUES ('$code') 

Затем обновить запись, используйте

UPDATE users SET code = '$code' WHERE id = $id 

Конечно, правильно подготовить заявления.

Кроме того, mysqli_query требует, чтобы первым параметром был соединение, а второй - строкой. Вы отменили его. См. Здесь: http://php.net/manual/en/mysqli.query.php

Следует также отметить, что этот вид процедуры должен выполняться перед выходом в браузер. Если это так, вы можете просто использовать заголовок PHP для перемещения вместо этого js обходного пути. Однако этот метод будет работать по вашему желанию. Это скорее всего будет считаться более чистым, если запросы и перемещение выполняются в начале сценария.

+0

Будет ли это беспорядок с кодом других пользователей? Я новичок в SQL. – rn10950

+0

Вставить только вставки в таблицу пользователя. это не повлияет на других пользователей. Однако, если вы не должным образом защитите этот файл $ id var, он может быть использован для обновления всех пользователей, если вы не будете осторожны. Как вы определяете значение $ id? –

+0

вы можете использовать метод mysqli_insert_id(), чтобы получить идентификатор последней вставленной строки, если вам это нужно – davidaam

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