2009-10-08 4 views
0

데이터를 데이터베이스에 저장하려고하는데 오류가 발생했습니다 db 데이터 정렬과 관련이 있습니다.하지만 확실하지 않습니다.PHP와 mysqli를 사용하여 mysql 데이터베이스에 저장

$query1 = "INSERT INTO scape.url (url,normalizedurl,service,idinservice) VALUES (url, normalizedurl, 4, 45454)"; 
$query = "INSERT INTO scape.url (url, normalizedurl, service, idinservice) VALUES (" 
      .$sql->real_escape_string($this->url)."," 
      .$sql->real_escape_string($this->normalizedUrl)."," 
      .$sql->real_escape_string($this->service)."," 
      .$sql->real_escape_string($this->idInService).")"; 
$result = $sql->query($query); 
echo $sql->error; 

내가 오류 메시지는 다음과 같습니다 : 잘못, 여기

쿼리는

당신은 당신의 SQL 구문에 오류가 있습니다; '//www.something/here/here/here/12345,httpwwwsomthighere를'근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인 한

데이터베이스 데이터 정렬이 필드에 줄입니다 utf8 - 일반 - 씨와 필드 유형은 varchar 255

그것에 대한 아이디어가 있습니까?

답변

1

이렇게하면 문자열 (url 및 normalizedurl)을 따옴표로 묶어야합니다. 그게 문법적인 문제입니다.

그것은 슬픈 일로, mysqli를 사용하여 매개 변수를 전달하는 것이 권장되지 않습니다. mysqli의 요점은 쿼리 매개 변수화가 있다는 것입니다. 예를 들어 : 그 클리 터스 에 대한

$mysqli = new mysqli($host, $user, $password, $database); 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit; 
} 
$sql = <<<END 
INSERT INTO scape.url (url,normalizedurl,service,idinservice) 
VALUES (?, ?, ?, ?) 
END; 
$stmt = $mysqli->prepare($sql); 
if ($stmt === false) { 
    printf("Error executing %s: %s\n", $sql, $stmt->error); 
    exit; 
} 
$stmt->bind_param('ssii', $this->url, $this->normalizedUrl, 
    $this->service, $this->idInService); 
$stmt->execute(); 
+0

감사합니다 내가 화면에 "그냥 GURU 배지를 받았습니다했다"팝업 것입니다 수 있다면 :) 은 항상 당신의 대답은 상세하고 정확 –

관련 문제