2016-10-29 4 views
0

그래서 사용자에 대한 데이터베이스를 만들고 변수를 사용하여 필드에 값을 삽입하고 싶습니다. 처음에는 do 함수를 호출하여 사용했지만 변수를 올바르게 읽지 않아서 준비와 별도로 실행하기로 결정했습니다. 나는 다음과 같은 오류 얻을이 코드를 실행하려고하면 그러나SQLite 준비 메서드가 구문 오류로 인해 실패합니다

$dbh->do("DROP TABLE IF EXISTS Users"); 
$dbh->do("CREATE TABLE Users(
zid TEXT, 
Name TEXT, 
Email TEXT, 
password TEXT, 
Mates TEXT, 
Program TEXT, 
Courses TEXT, 
Suburb TEXT, 
Birthday TEXT)"); 

$zid = "z33432523"; 
$name = "John Doe"; 
$email = "[email protected]"; 
$password = "alien"; 
$mates = "z3459148 z3458291"; 
$program = ""; 
$courses = ""; 
$suburb = ""; 
$birthday = "13/5/1992"; 

$sth = $dbh->prepare('INSERT INTO Users VALUES (?, ?, ?, ?, ?. ?, ?, ?, ?)'); 
$sth->execute($zid, $name, $email, $password, $mates, $program, $courses, $suburb, $birthday); 
$dbh->disconnect(); 

:

DBD::SQLite::db prepare failed: near ".": syntax error at ./dbm.pl line 35. 

을 내가 정확히 문제가 무엇인지 잘 모르겠어요이 내 코드?

+2

'.'이라는 오류가 표시되는 경우 ' 귀하의 SQL에서, 아마도 당신은 SQL을 검색하여 시작해야합니다 :-) –

+0

@DaveCross 하하 이것은 당황 스럽네요 ...... 감사합니다 – reetyn

+1

점 위에 땀을 내지 마십시오. 그것은 우리 모두에게 일어납니다. ;) 다른 메모에서 'Mates'열은 해당 사용자의 친구 ID를 보유한 것으로 보입니다. 하나의 열에 여러 개의 관계를 넣으면 데이터베이스 설계가 _ 비정규 화됩니다. 이는 관계형 데이터베이스의 경우 나쁜 결정입니다. 다른 테이블을 생성하는 것이 더 스마트합니다. 'relation_id','user_id','mate_id' 컬럼을 가진'Users_Mates'를 생성합니다. 이제 각각의 관계에 대한 하나의 레코드를 가질 수 있습니다. (대부분의 문자 적 ​​의미에서) ... – simbabque

답변

1
near ".": syntax error 

INSERT INTO Users VALUES (?, ?, ?, ?, ?. ?, ?, ?, ?) 
            ^
+0

고맙다. 나는 죽고 싶다. – reetyn

관련 문제