2012-11-08 107 views
0

我一直試圖讓MySQL的條目通過iOS更新。但是,xcode的模擬器拒絕更新這些值。我的格式是否正確? (澄清,數據庫名稱是「登錄」和兩個前衛變量是整數(即不必以不同的格式不是嗎?))MySQL更新命令不起作用

<?php 
$prog= $_GET['prog']; 
$prog1= $_GET['prog1']; 
$dbh = new PDO('(censored)'); 
$sql = "UPDATE login SET oneam = $prog, twelvefif = $prog1 WHERE username = 'hello'"; 
$q = $dbh->prepare($sql); 
$q; 
?> 

或在Xcode ...

NSString *urlString = [NSString stringWithFormat:@"(censored)?prog=%@&prog1=%@", prog, prog1]; 
+0

這取決於什麼是存儲在'$ prog','$ prog1','prog1','prog' – Raptor

+0

他們是整數(1和0的ly) – user1803649

+3

這是受SQL注入的影響,請參閱http://www.php.net/manual/en/pdo.prepare.php#90209 – 2012-11-08 06:22:04

回答

0

變化 -

$prog= $_GET['prog']; 
$login = "hello"; 
$prog= $_GET['prog1']; 

$prog= $_GET['prog']; 
$login = "hello"; 
$prog1= $_GET['prog1']; 
+0

謝謝,但仍然沒有解決它 – user1803649

0

如果var有一個整數沒有問題,那麼你必須用安全單引號將你的vars包圍起來,否則你必須使用單引號。

我知道你正在使用預處理語句,並且會處理這個問題,但無論如何你可以嘗試。

$sql = "UPDATE login SET oneam = '$prog', twelvefif = '$prog1' WHERE username = 'hello'"; 
0

爲了避免SQL注入的問題,您應該投你的變數int或在準備好的聲明綁定變量(首選...):

$prog = (int) $_GET['prog']; 
$prog1 = (int) $_GET['prog1']; 

除此之外,你必須實際執行在事先準備好的聲明,正準備是不夠的:

$q = $dbh->prepare($sql); 
$q->execute();