2013-04-30 5 views
0

Я работал над некоторым кодом, который содержит форму, в которой вам предлагается ввести идентификатор клиента, и после отправки формы PHP за формой получит доступ к базе данных и отобразит таблицу с информацией о введенном идентификаторе ,Создать конкретные данные из базы данных?

Однако мой PHP, похоже, не работает, когда я ввожу идентификатор и нажимаю submit, я получаю это сообщение об ошибке «У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL для право синтаксиса использовать вблизи '=' 987451' в строке 1"

Вот мой HTML:

<body> 

<h1>Task 8</h1> 

<form id="customerform" action="task8.php" method="get"> 

<p>please fill in the following form</p> 
<p>Customer ID: <input type="text" name="custID" /><br/> 
<p><input type="submit" value="Submit"> 
<input type="reset" value="Reset"></p> 
</form> 

</body> 

Вот мой PHP:

<body> 

<?php 
$conn = mysql_connect("localhost", "twa312", "dam6av9a"); 
mysql_select_db("warehouse312", $conn) 
or die ('Database not found ' . mysql_error()); 

$cust = $_GET["custID"]; 
$sql = "select * from orders"; 
$sql = $sql . "where customerID = '$cust'"; 
$rs = mysql_query($sql, $conn) 
or die ('Problem with query' . mysql_error()); 
?> 

<p>information for customer ID <?php echo $cust ?> :</p> 

<?php if (mysql_num_rows($rs)>0){ ?> 

<table width="700" border="1" cellpadding="10" summary="Customer Details"> 

<tr> 
<th>Order Number</th> 
<th>Order Date</th> 
<th>Shipping Date</th> 
</tr> 

<?php while ($row = mysql_fetch_array($rs)) { ?> 

<tr> 
<td><?php echo $row["orderNumber"]?></td> 
<td><?php echo $row["orderDate"]?></td> 
<td><?php echo $row["shippingDate"]?></td> 
</tr> 

<?php } mysql_close($conn); ?> 

</table> 

<?php } 
else {?> <p>No customer with ID <?php echo $cust ?> in the database</p> 
<?php } ?> 

</body> 

Если вам нужно больше INFORMATI просто спросите, и любая помощь будет действительно оценена!

+0

Пожалуйста, прекратите использование 'функции mysql_', они устарели. Вместо этого используйте 'mysqli_' или PDO. – akluth

ответ

4

Вы пропустили пробел между именем TABLENAME и WHERE:

$sql = "select * from orders"; 
$sql = $sql . "where customerID = '$cust'"; 

должен быть

$sql = "select * from orders"; 
$sql = $sql . " where customerID = '$cust'"; 

или просто

$sql = "select * from orders where customerID = '$cust'"; 

Please, don't use mysql_* functions in new code. Они больше не поддерживаются and are officially deprecated. См. red box? Узнайте о prepared statements вместо этого, и используйте PDO или MySQLi - this article поможет вам решить, какой. Если вы выберете PDO, here is a good tutorial.

Кроме того, вы широко открыты для SQL injections

+1

Новый интерфейс PDO довольно объектно-ориентирован, а программист .NET более десяти лет подходит мне, но есть ли еще ** сценарий, например, путь ** для отправки подготовленных и параметризованных запросов? –

+0

Что такое «сценарий как способ»? –

+0

У меня было ощущение, что это будет что-то раздражающее, как недостающее пространство, спасибо большое! – bigsenator

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