2010-03-24 3 views
1

에 따르면 question 업로드 이미지를 만드는 데 성공했지만 이제는 을 articles이라는 다른 테이블에 저장해야합니다. 이 정확한지는 모르겠지만, 나는이기사 테이블에 이미지를 업로드 한 후 image_id를 저장하는 중

$select_image=mysql_query("select image_id from image where image_name = $fileName") or die(mysql_error()); 

같은 테이블 이미지에서 image_id을 선택하고이

$fetch=mysql_fetch_array($select_image); 

$query=mysql_query("insert into articles (article_name,article_category,article_subcategory,article_body,article_summary,article_tags,article_photo,article_timedate) values ('$article_title','$CategoryID','$ProductID','$article_body','$article_summary','$fetch[image_id]','$time')") or die ('Error, Query Faild'.mysql_error()); 

처럼 내 문서 삽입 쿼리 결과를이 맞 가져 오기 위해 노력했다? mysql_error를이

에서 알 수없는 열 'Penguins.jpg' 'where 절'당신은 당신의 첫 번째 쿼리에 따옴표로 $fileName을 둘 필요가

답변

1

당신이

SELECT LAST_INSERT_ID() 

대신

select image_id from image where image_name = $fileName 
+0

어떻게해야하지 말하고 싶지만 호출하여 마지막으로 삽입 된 ID를 선택할 수 있습니다 나는 다른 select 쿼리에서 이것을 가져온다? – Bader

+0

select image_id ...를 SELECT LAST_INSERT_ID()로 바꿉니다. 기본 키 (id)를 얻기 위해 실제 행을 선택할 필요가 없습니다. id 필드에 auto_increment를 사용한다고 가정합니다. 작동 – Nexum

+0

고마워요 :) – Bader

0

, 즉 '$fileName'

3

이것은 MySQL의 구문 말을 유지 관련 질문. 모든 데이터는이 규칙을 사용하여 준비해야 쿼리로 직접 이동 : 따옴표 그래서

안에
1. 데이터는 mysql_real_escape_string를 사용하여 이스케이프해야합니다() 함수
2. 코드가 있어야합니다

$fileName=mysql_real_escape_string($fileName); 
$select_image=mysql_query("select image_id from image where image_name = '$fileName'") or die(mysql_error()); 

또한이 쿼리 바로 전에 이미지를 삽입 한 경우 ID를 선택할 필요가 없습니다. 당신은, 그래서 당신의 MySQL 서버가 쿼리를 처리하기 위해 노력하고있다 mysql_insert_id() 기능

2

문제는 당신의 파일 이름이 인용되지 않는 것입니다 사용할 수 있습니다

더 나쁜 무엇
select image_id from image where image_name = Penguins.jpg 

사람이라는 파일을 업로드한다는 것입니다

1; EVIL MYSQL QUERY HERE

그들은 당신의 서버에서 임의의 MySQL을 실행할 수 있습니다. 이를 SQL 주입 공격이라고합니다.

이 내용을 다루는 PHP manual page을 확인하십시오.

+0

의 난이가 무서워 주입 문제, 그러나 다만 잘못된 구문 문제 : –

관련 문제