PHP Mysqli auto_increment sütunu olan bir tabloya bir satır ekleme

4 Cevap php

Im 4 sütun vardır ve ilki id denilen otomatik artan tamsayı olan bir tablo üzerinde çalışıyor.

Mysqli kullanarak bu tabloya eklemek için gidiyoruz im tablolarını ise ben çalışan bir sorgu ekleyerek sorun sahip tutmak. PhpMyAdmin kullanarak Onu NULL ver bana. Ive bu çalıştı:

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES ('NULL', ?, ?, ?)";
$stmt -> bind_param("ssi", $col2, $col3, $col4)

ve bu

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)";
$stmt -> bind_param("ssi", $col2, $col3, $col4)

ve sadece bind_param 3 argümanları (son 3) verir. Bu işin ne. Ben de bu çalıştı:

$null = NULL;
$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (?, ?, ?, ?)";
$stmt -> bind_param("issi", $null, $col2, $col3, $col4);

Bu işin Yoktur. Masanın bu tür içine sokulması standart bir yolu var mı?

4 Cevap

Sadece id alanı atlamak, MySQL otomatik olarak dolduracaktır:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";
$stmt->bind_param("ssi", $col2, $col3, $col4)

Bu id mysql tarafından otomatik olarak (bu nedenle artırılır) ilave edilir, çünkü çalışması gerekir:

 $query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";

Bazı durumlarda, açıkça auto_incremtnt alanı eklemek için bu durumda ise o zaman INSERT IGNORE deyimi kullanabilirsiniz, bu konuda daha fazla bilgi için mysql kılavuzu görmek var.

Bunu

$query = "INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)";
$stmt -> bind_param("ssi", $col2, $col3, $col4)

mutlaka çalışması gerekir. Olsun tam hata nedir?

Şimdi daha iyi görünüyorsun, $ sorgu ve $ stmt var. Ne arasında var? Muhtemelen bir kısmını eksik.

Bu olmalı

$stmt = $mysqli->prepare("INSERT INTO tbl (id, col2, col3, col4) VALUES (NULL, ?, ?, ?)");
$stmt -> bind_param("ssi", $col2, $col3, $col4);
$stmt ->execute();

id alanı ise auto_increment, sonra sadece insert sorguda belirtmek gerekmez:

$query = "INSERT INTO tbl (col2, col3, col4) VALUES (?, ?, ?)";

Ve, elbette, bunun için herhangi bir parametre bağlama kalkmayın ;-)


As it's generated by MySQL, there is no need to pass that column.