2013-05-10 6 views
-2

У меня проблема с некоторым кодом php, который я обнаружил. Страница подключается к базе данных MySQL, перечисляет записи и предоставляет кнопки для удаления записей, а также форму для ввода новых записей. Перечень и удаление работает нормально, но когда я иду, чтобы добавить новую запись дает следующее сообщение об ошибкеОшибка PHP/MySQL INSERT INTO VALUES

«ВСТАВИТЬ не удалось: INSERT INTO продукты VALUES („3“, тест имя„ „тест Номбр“,“ 66 ',' 0 ',' 77 ',>' 0 ',' Test descript ',' Test descript esp ',' test notes ') У вас возникла ошибка в синтаксисе SQL, проверьте руководство, соответствующее вашему MySQL server> version для правильного синтаксиса для использования рядом с 'name', 'test nombre', '66', '0', '77', '0', 'Test> descript', 'Test descript esp' 'в строке 1 "

Я проверил на наличие опечаток, но ничего не могу найти - надеюсь, что кто-то может определить, что я делаю неправильно, и назовите меня в правильном направлении. Благодарю. Вот код PHP:

<?php 
$pageTitle = "MIS Dashboard"; 
include ('includes/header.php'); ?> 

<div class="wrapper"> 

<?php // productsadmin.php 


require_once 'includes/login.php'; 
$db_server = mysql_connect($db_hostname, $db_username, $db_password); 

if (!$db_server) die("Unable to connect to MySQL: " . mysql_error()); 

mysql_select_db($db_database, $db_server) 
    or die("Unable to select database: " . mysql_error()); 

if (isset($_POST['delete']) && isset($_POST['product_id'])) 
{ 
    $product_id = get_post('product_id'); 
    $query = "DELETE FROM products WHERE product_id='$product_id'"; 

    if (!mysql_query($query, $db_server)) 
     echo "DELETE failed: $query<br />" . 
     mysql_error() . "<br /><br />"; 
} 

if (isset($_POST['product_id']) && 
    isset($_POST['name_eng']) && 
    isset($_POST['name_esp']) && 
    isset($_POST['netprice_bob']) && 
    isset($_POST['netprice_usd']) && 
    isset($_POST['sellingprice_bob']) && 
    isset($_POST['sellingprice_usd']) && 
    isset($_POST['description_eng']) && 
    isset($_POST['description_esp']) && 
    isset($_POST['notes'])) 
{ 
    $product_id = get_post('product_id'); 
    $name_eng = get_post('name_eng'); 
    $name_esp = get_post('name_esp'); 
    $netprice_bob = get_post('netprice_bob'); 
    $netprice_usd  = get_post('netprice_usd'); 
    $sellingprice_bob = get_post('sellingprice_bob'); 
    $sellingprice_usd  = get_post('sellingprice_usd'); 
    $description_eng = get_post('description_eng'); 
    $description_esp = get_post('description_esp'); 
    $notes = get_post('notes'); 

    $query = "INSERT INTO products VALUES" . 
     "('$product_id', $name_eng', '$name_esp', '$netprice_bob', '$netprice_usd', '$sellingprice_bob', '$sellingprice_usd', '$description_eng', '$description_esp', '$notes')"; 

    if (!mysql_query($query, $db_server)) 
     echo "INSERT failed: $query<br />" . 
     mysql_error() . "<br /><br />"; 
} 

echo <<<_END 
<form action="productsadmin.php" method="post"><pre> 

    Product ID:  <input type="text" name="product_id" /> 
    Name:   <input type="text" name="name_eng" /> 
    Nombre:  <input type="text" name="name_esp" /> 
    Net Price BOB: <input type="text" name="netprice_bob" /> 
    Net Price USD: <input type="text" name="netprice_usd" /> 
    Selling Price BOB: <input type="text" name="sellingprice_bob" /> 
    Selling Price USD: <input type="text" name="sellingprice_usd" /> 
    Description :  <input type="text" name="description_eng" /> 
    Descripcion :  <input type="text" name="description_esp" /> 
    Notes :  <input type="text" name="notes" /> 

      <input type="submit" value="ADD RECORD" /> 
</pre></form> 
_END; 

$query = "SELECT * FROM products"; 
$result = mysql_query($query); 

if (!$result) die ("Database access failed: " . mysql_error()); 
$rows = mysql_num_rows($result); 

for ($j = 0 ; $j < $rows ; ++$j) 
{ 
    $row = mysql_fetch_row($result); 
    echo <<<_END 
<pre> 
    Product ID:  $row[0] 
    Name:    $row[1] 
    Nombre:   $row[2] 
    Net Price BOB: $row[3] 
    Net Price USD: $row[4] 
    Selling Price BOB: $row[5] 
    Selling Price USD: $row[6] 
    Description:  $row[7] 
    Descripcion:  $row[8] 
    Notes:   $row[9] 

</pre> 
<form action="productsadmin.php" method="post"> 
<input type="hidden" name="delete" value="yes" /> 
<input type="hidden" name="product_id" value="$row[0]" /> 
     <input type="submit" value="DELETE RECORD" /></form> 
_END; 
} 

mysql_close($db_server); 

function get_post($var) 
{ 
    return mysql_real_escape_string($_POST[$var]); 
} 
?> 


</div> 

<?php include ('includes/footer.php'); ?> 
+2

У вас есть ошибочный '' 'в вашем запросе –

+1

Вам не хватает одной кавычки до' $ name_eng'. Что еще более важно, ваш код может быть уязвим для [SQL Injection] (http://bobby-tables.com/). –

+0

[** Пожалуйста, не используйте 'mysql_ *' функции в новом коде **) (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). –

ответ

3

Вам не хватает одного котировку на второе значение,

INSERT INTO products VALUES('3', 'test name', 'test nombre', ...) 
           --^here: add single quote 

Также необходимо дезинфицировать значения, прежде чем вставить его в базу данных. Я бы рекомендовал вам использовать PDO или MYSQLi расширения для предотвращения от SQL Injection.

+0

, который исправил это спасибо. В следующий раз я должен проверить еще более внимательно. спасибо за помощь/пятно тощие трубы. – boliviab

+0

приветствуется ':)' –

0
INSERT failed: INSERT INTO products VALUES('3', test name', 'test nombre', '66', '0', '77', >'0', 'Test descript', 'Test descript esp', 'test notes'). 

Есть две проблемы. В начале второго значения нет стартовой одинарной кавычки, а семь значений - «0»

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