Có một số điều sai ở đây.
Bạn đang sử dụng từ khóa MySQL list
như một chức năng, và chỉ điều đó thôi cũng sẽ gây ra cho bạn vấn đề.
Chú thích bên:Vâng, tôi biết đó không phải là từ "dành riêng", mà là "từ khóa" và MySQL xử lý từ khóa đặc biệt nếu được sử dụng như một hàm, đó là những gì bạn đang làm trong truy vấn thứ hai của bạn , và là cách mà MySQL đang diễn giải nó là; một hàm chứ không phải tên khai báo bảng.
Tôi khuyên bạn nên đổi tên bảng đó thành danh sách hoặc bọc nó trong dấu tích.
Bạn cũng đang trộn các API / hàm MySQL không trộn lẫn với nhau.
- Tham khảo: Tôi có thể kết hợp các API MySQL trong PHP?
Vì vậy, mã mới của bạn sẽ đọc là,
khi thả $selected = mysql_connect('christmas', $dbhandle);
$query = mysqli_query($dbhandle, "SELECT * FROM `list` WHERE name='$name'")
or die (mysqli_error($dbhandle));
if(mysqli_num_rows($query) > 0){
echo 'that name already exists';
}else{
mysqli_query($dbhandle, "INSERT INTO `list` (name, one, two, three, four, five, six, seven, eight)
VALUES ('$name' , '$one' , '$two' , '$three' , '$four' , '$five' , '$six', '$seven' , '$eight')")
or die (mysqli_error($dbhandle));
}
mysqli_close($dbhandle);
Mã của bạn cũng có thể được đưa vào SQL. Sử dụng một tuyên bố đã chuẩn bị.
Bây giờ, chúng tôi không biết tất cả các biến của bạn đến từ đâu.
Sử dụng báo cáo lỗi.
Tôi cũng khuyên bạn nên sử dụng empty()
có điều kiện cho các biến / đầu vào của bạn.
Nếu không, bạn cũng có thể gặp các lỗi khác mà MySQL có thể phàn nàn.
Tức là:
if(!empty($var)){...}
Cuối cùng và để đảm bảo không có mục nhập trùng lặp nào trong cơ sở dữ liệu của bạn, bạn có thể đặt một ràng buộc DUY NHẤT.