2016-07-12 3 views
0

숫자 및 수학 연산자가있는 문자열을 데이터베이스에 저장하려고합니다. 문자열의 액면가를 저장하고 싶지만 php 나 mysql은 문자열을 계산 한 다음 데이터베이스에 저장하고 있습니다. 예를 들어변수를 데이터베이스에 문자열로 저장하는 방법은 무엇입니까?

:

$stringValue = "24/2"; 
$query = "UPDATE winter"; 
$query .= " SET value =".$stringValue; 
$query .= " WHERE name = 'xyz'"; 
$result = mysqli_query($connection, $query); 

코드를 실행 한 후, 나는 데이터베이스에 저장된 값이 "2분의 24"일하기를 원하지만 @Uueerdo 말했듯이 12

+1

검색어가 '... SET value = 24/2 ...'이기 때문에 mysql입니다. 그것의 주위에 작은 따옴표를 추가하십시오; 또는 "SQL 주입"취약점을 피하기 위해 매개 변수화 된 쿼리를 사용하는 것이 더 좋습니다. _ (편집 : 그리고 "그것"에 의해 나는 쿼리의 문자열 값을 의미합니다.) _ – Uueerdo

+0

''그러나 12 "''로 저장 중입니다 - 왜냐하면'24/2' *가 * 12입니다. 24/2 "문자열로 *? – David

+0

우에 르는 솔루션. 나는 따옴표를 추가했다. 감사합니다 –

답변

2

로 저장되고 문자열 앞뒤에 ' 부호를 추가해야합니다. SQL.

$stringValue = "24/2"; 
$query = "UPDATE winter"; 
$query .= " SET value ='".$stringValue."'"; 
$query .= " WHERE name = 'xyz'"; 
$result = mysqli_query($connection, $query); 

또한 준비된 문장을 사용해야합니다. 더 이상은 아니지만 더 안전합니다.

$stringValue = "24/2"; 
$name = "xyz"; 
$query = "UPDATE winter"; 
$query .= " SET value=?"; 
$query .= " WHERE name=?"; 

$stmt = $connection->prepare($query); 
$stmt->bind_param('ss', $stringValue, $name); 
$stmt->execute(); 
$res = $stmt->get_result(); 
+1

참고 : _you_가 데이터를 생성하는 경우에도 실수로 sql-inject를 할 수 있으므로 SQL 주입을 방지 할 가치가 있습니다. 엄지 손가락 : 입력을 절대 신뢰하지 마십시오. – FirstOne

관련 문제