0

この PHP MySQL を使用して、データベースから並べ替え可能なリストを表示しています。

<?php                           
     $query  = "SELECT * FROM question_four ORDER BY recordListingID ASC";
     $result = mysql_query( $query );           
     while( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ) {
?>
        <li id="recordsArray_<?php echo $row['recordID']; ?>"><?php echo $row['recordText']; ?></li>
<?php 
     } 
?>

同じテーブルを更新する代わりに、次のコードを使用して新しいテーブルに挿入しようとしました:

$action = mysql_real_escape_string($_POST['action']);
$updateRecordsArray = $_POST['recordsArray'];
if ( $action == "updateRecordsListings" ) {
    $listingCounter = 1;
    foreach ( $updateRecordsArray as $recordIDValue ) {
        $query1 = "INSERT into answers_questionfour(id,recordListingID,recordID,recordText) values ('.$user_fbid.','.$listingCounter.', '.$recordIDValue.','.$recordText.')";
        mysql_query( $query1 ) or die('Error, insert query failed');
        $listingCounter = $listingCounter + 1;
    }
}

ただし、現在は 1 人のユーザーのみに挿入されています。他のユーザーがソート済みリストを送信しようとしているとき。表には追加されません。それを理解するのを手伝ってもらえますか?ありがとう

4

1 に答える 1

0

Dinesh は、セキュリティの問題については確かに正しいです。'ただし、いずれにせよ、データ値 (特に文字列型!) を引用符 ( )で囲む必要がありますが、SQL 文字列全体が既に で囲まれているため、連結演算子 ( ) は除外します。."

 $sql="INSERT into answers_questionfour(id,recordListingID,recordID,recordText) 
   values ('$user_fbid','$listingCounter', '$recordIDValue','$recordText')"

PDO 構文では、これは次のようになります。

$sql="INSERT into answers_questionfour(id,recordListingID,recordID,recordText) 
   values (?,?,?,?)";
$sth = $dbh->prepare($sql);
$sth->execute(array($user_fbid,$listingCounter, $recordIDValue,$recordText));

$dbhPDOオブジェクトに割り当てられたデータベースハンドラです。

于 2013-09-11T07:42:38.950 に答える