0

iOSからphp経由でmysqlエントリを更新しようとしています。ただし、xcode のシミュレーターは値の更新を拒否します。これを正しくフォーマットしましたか?(明確にするために、データベース名は「login」で、2 つの prog 変数は整数です (異なる形式にする必要はありませんか?))

<?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];
4

3 に答える 3

0

変化 -

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

$prog= $_GET['prog'];
$login = "hello";
$prog1= $_GET['prog1'];
于 2012-11-08T06:21:59.023 に答える
0

var に問題がない整数がある場合は、セキュリティのために一重引用符で変数を囲む必要がありますが、それ以外の場合は一重引用符を使用する必要があります。

準備済みステートメントを使用していて、これを処理できることは知っていますが、とにかく試すことができます。

$sql = "UPDATE login SET oneam = '$prog', twelvefif = '$prog1' WHERE username = 'hello'"; 
于 2012-11-08T21:36:54.833 に答える
0

SQLインジェクションの問題を回避intするには、変数を準備済みステートメントにキャストするか、変数をバインドする必要があります(推奨...):

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

それとは別に、準備されたステートメントを実際に実行する必要があります。準備するだけでは十分ではありません。

$q = $dbh->prepare( $sql );
$q->execute();
于 2012-11-08T21:40:04.027 に答える