Ne benim SQL sorgusu ile yanlış?

4 Cevap php

Benim SQL sorgusu hızlı bir bakmak gerekir. Zaten bana bir baş ağrısı verdi. Ben aldık bazı tavsiyelerde karşılaştırarak, benim SQL için doğru biçimde çözemedim.

Bu benim kodudur:

$query = "INSERT INTO `[my_db_name]`.`members` (`id` ,`first` ,`last` ,`add1` ,`add2` ,`phone_home` ,`phone_cell` ,`phone_dad` ,`phone_mom` ,`email1` ,`email2`)
    VALUES ('NULL' , '".$first."', '".$last."', '".$add1."', '".$add2."', '".$phone_home."', '".$phone_cell."', '".$phone_dad."', '".$phone_mom."', '".$email1."', '".$email2."')";

`mysql_query($query) or die ('Error updating database, Error:' . mysql_error());

Şimdiden teşekkürler!

EDIT:

Şu anda form olarak bu var:

<table border="0" cellpadding="0" cellspacing="0">

			<form  enctype="multipart/form-data" method="POST" action="add-member.php">

			<tr class="labels">

				<td class="f">Add a Member</td>
				<td class="l"></td>

			</tr>

			<tr>

				<td class="f"><label for="first">First Name:</label></td>
				<td class="l"><input id="first" type="text"/></td>

			</tr>


			<tr>

				<td class="f"><label for="last">Last Name:</label></td>
				<td class="l"><input id="last" type="text"/></td>

			</tr>

			<tr>

				<td class="f"><label for="add1">Address 1:</label></td>
				<td class="l"><input id="add1" type="text"/></td>

			</tr>

			<tr>

				<td class="f"><label for="add2">Address 2:</label></td>
				<td class="l"><input id="add2" type="text"/></td>

			</tr>

			<tr>

				<td class="f"><label for="phone_home">Home Phone:</label></td>
				<td class="l"><input id="phone_home" type="text"/></td>

			</tr>

			<tr>

				<td class="f"><label for="phone_cell">Cell Phone:</label></td>
				<td class="l"><input id="phone_cell" type="text"/></td>

			</tr>

			<tr>

				<td class="f"><label for="phone_dad">Dad Cell:</label></td>
				<td class="l"><input id="phone_dad" type="text"/></td>

			</tr>

			<tr>

				<td class="f"><label for="phone_mom">Mom Cell:</label></td>
				<td class="l"><input id="phone_mom" type="text"/></td>

			</tr>

			<tr>

				<td class="f"><label for="email1">Email 1:</label></td>
				<td class="l"><input id="email1" type="text"/></td>

			</tr>

			<tr>

				<td class="f"><label for="email2">Email 2:</label></td>
				<td class="l"><input id="email2" type="text"/></td>

			</tr>

		</table>

Bu insert sorgu:

<?php

	$first = $_POST['first'];
	$last = $_POST['last'];
	$add1 = $_POST['add1'];
	$add2 = $_POST['add2'];
	$phone_home = $_POST['phone_home'];
	$phone_cell = $_POST['phone_cell'];
	$phone_dad = $_POST['phone_dad'];
	$phone_mom = $_POST['phone_mom'];
	$email1 = $_POST['email1'];
	$email2 = $_POST['email2'];

	include ("../lib/login.php");

	mysql_connect($hostname, $username, $password)
	 or die("Unable to connect to MySQL");

	mysql_select_db ([dbname]);

	$query = "INSERT INTO `[dbname]`.`mem_dir` (`id` ,`first` ,`last` ,`add1` ,`add2` ,`phone_home` ,`phone_cell` ,`phone_dad` ,`phone_mom` ,`email1` ,`email2`)
			VALUES (NULL , '$first', '$last', '$add1', '$add2', '$phone_home', '$phone_cell', '$phone_dad', '$phone_mom', '$email1', '$email2')";

	mysql_query($query) or die ('Error updating database, Error:' . mysql_error());

	echo "Database successfully uploaded with:<br/><ul>
	<li>" . $first . "</li>
	...
	</ul>";

?>

Giriş göndermek gibi görünüyor, ama değil değerler ... Ben ona bakıyor ve bunu göremiyoruz yoruldum. Ben tüm yardım için teşekkür ederiz. Teşekkürler!

EDIT (AGAIN):

Salman A tarafından işaret edildiği gibi, sorun her giriş yerine bir "isim" bir "kimliği" ile tespit edilmiş olması aslında formu olduğunu, ve.

Herkese teşekkürler, ben gerçekten tüm yardım ederiz! Ben yanlış SQL biçimlendirme başka bir konu, sanırım ha?

4 Cevap

Onun form o kokuyor! Tüm değiştirin:

<input id="yadayada">

Için:

<input name="yadayada">
<!--   ^^^^---- you must use the name attribute -->

İsteğe bağlı:

  • Form etiketi yanlış olduğunu; Ben yuvarlak, <form> içindeki başka bir yol <table> değil koymak öneririz.
  • Ben bir </form> ve <input type="submit"> görmüyorum.
  • Dosyaları yüklerken sürece bir multipart/form-data kodlaması gerekmez.

NULL alıntı olmamalıdır.

(Bu PHP gibi görünüyor çünkü) Eğer değerler listesi kolaylaştırabilirsiniz:

VALUES (NULL , '$first', '$last', '$add1', '$add2', '$phone_home', '$phone_cell', '$phone_dad', '$phone_mom', '$email1', '$email2')";

NULL değerler kaçmış değil, bu (göreceli SQL değer bir dize "NULL", gerçekten NULL durumda) sorun

$query = "INSERT INTO `[my_db_name]`.`members` (`id` ,`first` ,`last` ,`add1` ,`add2` ,`phone_home` ,`phone_cell` ,`phone_dad` ,`phone_mom` ,`email1` ,`email2`)
    VALUES (NULL , '".$first."', '".$last."', '".$add1."', '".$add2."', '".$phone_home."', '".$phone_cell."', '".$phone_dad."', '".$phone_mom."', '".$email1."', '".$email2."')";

Yanı sıra dize içinde bir noktalı virgül koydu.

Eğer (mysql günlüklerine) veritabanından alıyoruz hatası nedir