2013-03-21 6 views
0

Я уже два дня пытаюсь понять это. Я скопировал дословно из учебника, и я все еще не могу вставить данные в таблицу. Вот мой код с формойНевозможно ВСТАВИТЬ данные в mysql, используя php

<font face="Verdana" size="2"> 
<form method="post" action="Manage_cust.php" > 
Customer Name 
<font face="Verdana"> 
<input type="text" name="Company" size="50"></font> 
<br> 
Customer Type 
<font face="Verdana"> 
<select name="custType" size="1"> 
    <option>Non-Contract</option> 
    <option>Contract</option> 
</select></font> 
<br> 
Contract Hours 
<font face="Verdana"> 
<input type="text" name="contractHours" value="0"></font> 
<br> 
<font face="Verdana"> 
<input type="submit" name="dothis" value="Add Customer"></font> 
</form> 
</font> 
<font face="Verdana" size="2"> 

<?php 
    if (isset($_POST['dothis'])) { 

    $con = mysql_connect ("localhost","root","password"); 
    if (!$con){ 
    die ("Cannot Connect: " . mysql_error()); 
    } 

    mysql_select_db("averyit_net",$con); 

    $sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours) VALUES 
    ('$_POST[Company]','$_POST[custType]','$_POST[contractHours]')"; 

    mysql_query($sql, $con); 

    print_r($sql); 


    mysql_close($con); 
    } 
?> 

Это мой PHPMYADMIN информация о сервере:

сервер: 127.0.0.1 через TCP/IP Программное обеспечение: MySQL версии программного обеспечения: 5.5.27 - MySQL Community Server (GPL) протокол версии: 10 Пользователь: корень @ локальный сервер кодировок: UTF-8 Unicode (utf8)

Пожалуйста, скажите мне, почему это не будет работать. когда я запускаю сайт, он помещает информацию в нее и исчезает, когда я нажимаю кнопку отправки, но она не входит в таблицу. Сообщения об ошибках не отображаются. HELP

+2

пытается разместить свой код запроса внутреннего Try-фиксатор, так что вы можете отслеживать исключение – nvl

+1

я знаю, что это всего лишь пример из учебника, но нужно знать, что получение данных непосредственно из $ _POST и помещение его в SQL-запрос очень опасно - для реального пользователя тривиально злоупотреблять этим и читать, изменять или удалять вашу базу данных.Это нормально для обучения, но НИКОГДА не делайте этого ни в одном приложении, которое открыто для публики. –

+1

@NovalAgungPrayogo В этом коде нет ничего, что могло бы вызвать исключение. – Tchoupi

ответ

0

Я немного поправился в вашем SQL-заявлении, сохранил его в массиве, и это необходимо для того, чтобы ваши почтовые данные действительно были установлены, иначе он будет генерировать нулевое значение. Пожалуйста, всегда санируйте свой вход.

в вашем Manage_cust.php:

<?php 

if (isset($_POST['dothis'])) 
{ 

$con = mysql_connect ("localhost","root","password"); 
    if (!$con) 
    { 
     die ("Cannot Connect: " . mysql_error()); 
    } 

mysql_select_db("averyit_net",$con); 

$company = isset($_POST['Company'])?$_POST['Company']:NULL; 
$custype = isset($_POST['custType'])?$_POST['custType']:NULL; 
$hours = isset($_POST['contractHours'])?$_POST['contractHours']:NULL; 

$sql = "INSERT INTO cust_profile(Customer_Name, 
           Customer_Type, 
           Contract_Hours) 
     VALUES('$company', 
       '$custype', 
       '$hours') 
     "; 

     mysql_query($sql, $con); 

     mysql_close($con); 
} 
?> 
+0

Просьба пояснить для OP то, что вы изменили и почему, а также, пожалуйста, обратитесь к уязвимости SQL-инъекции. –

+0

Я пробовал ваш код и до сих пор ничего. Я собираюсь сходить сюда. Как я могу просто убедиться, что у меня есть соединение с mysql? – user2193312

+0

попробуйте var_dump ваш SQL-запрос ... var_dump ($ sql); положите его после заявления sql ... что он говорит? – mmr

0

Прежде всего, не используйте font теги ... ever

Во-вторых, из-за этой линии:

if (isset($_POST['dothis'])) { 

It похоже, что ваш HTML и PHP объединены в один скрипт? В этом случае, вам необходимо изменить действие на форме что-то вроде этого:

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" > 

Кроме того, вы можете убить плохое соединение в одной строке:

$con = mysql_connect("localhost","root","password") or die("I died, sorry." . mysql_error()); 

Проверьте свои сообщения с isset(), а затем присваивать значения переменным.

var $company; 
if(isset($_POST['Company']) { 
    $company = $_POST['Company']; 
} else { 
    $company = null; 
} 
//so on and so forth for the other fields 

Или используйте ternary operators

Кроме того, с использованием оригинального mysql PHP API, как правило, плохой выбор. Он даже упоминается в PHP manual for the API

Всегда лучше пойти с mysqli или PDO так давайте преобразуем, что:

//your connection 
$conn = mysqli_connect("localhost","username","password","averyit_net"); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 


$sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours) 
     VALUES ($company,$custType,$contractHours)"; 
      // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
      // Assuming you set these 

$stmt = mysqli_prepare($conn, $sql); 
$stmt->execute(); 
$stmt->close(); 

Кто-то сказать мне, если это не так, поэтому я могу это исправить. Я не использовал mysqli через некоторое время.

+0

ОК, на этот раз что-то другое. браузер сказал, что он не смог подключиться к веб-странице, как только я нажал кнопку отправки – user2193312

+0

Возможно, ошибка 500? – SomeShinyObject

+0

Я пытался закодировать mysqli, но мой блокнот ++ не выделял его синим цветом. Я просто загружаю XAMPP и блокнот ++, так что это последняя версия. – user2193312

0

Изменения $ SQL к этому:

$sql = "INSERT INTO cust_profile (Customer_Name, Customer_Type, Contract_Hours) VALUES ('".$_POST[Company]."','".$_POST[custType]."','".$_POST[contractHours]."') 
Смежные вопросы