2016-07-12 13 views
0

数値と数値演算子を含む文字列をデータベースに保存しようとしています。私は文字列の額面を保存するが、phpまたはmysqlは文字列を計算し、それをデータベースに保存している。例えば変数をデータベースに文字列として保存する方法は?

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

コードを実行した後、私は、データベースに保存された値は、「24/2」になりたい、しかし@Uueerdoが言ったように、それは12

+1

あなたのクエリは '... SET value = 24/2 ...'であるため、mysqlです。その周りに一重引用符を追加してみてください。または「パラメータの照会」を使用して「SQLインジェクション」脆弱性を回避することをお勧めします。 _ – Uueerdo

+0

''しかし、それは12 "'として保存されています - '24/2' *は* 12なので、' ' *文字列*として24/2''? – David

+0

Uueerdo溶液が働いた。私は引用符を追加しました。ありがとう –

答えて

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インジェクションを防止する価値はあります。経験則:入力を信頼しないでください。 – FirstOne

関連する問題