2016-08-26 15 views
0

私の構文には小さな問題があります。私はプロジェクトを達成しようとしていますが、少し問題があります。MySQL構文で文字列を繰り返して、構文エラーを取得しようとしています

<?php 
include('includes/db_credentials.php'); 

// connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

// connection chck 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

// Check strings for strings 
$primary_name = mysqli_real_escape_string($conn, $_POST['primary_name']); 
$primary_mobile = mysqli_real_escape_string($conn, $_POST['primary_mobile']); 
$primary_country = mysqli_real_escape_string($conn, $_POST['primary_country']); 
$primary_state = mysqli_real_escape_string($conn, $_POST['primary_state']); 



$rand = rand(1,999999999); 
$times = 2; 
$rpt = str_repeat("('$primary_name', '$primary_mobile', '$primary_country', '$primary_state', '$rand;'), ", $times); 




$sql = "INSERT INTO cards (primary_name, primary_mobile, primary_country, primary_state, card_code) 
VALUES $rpt"; 




if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
    $id = mysqli_insert_id(); 
    echo $id; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 






$conn->close(); 
?> 

Error: INSERT INTO cards (primary_name, primary_mobile, primary_country, primary_state, card_code) VALUES ('John Doe', '000 000 0000', 'Afghanistan', 'Badghis', '23605621;'), ('John Doe', '000 000 0000', 'Afghanistan', 'Badghis', '23605621;'), You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

私は、次のMySQLのリターン・メッセージは、私は一度に複数の行を挿入する方法にStackOverflowの上ここで読んでいると、これは私がそれに得ることができる最も近い、誰もができるようになる取得しています私が間違ってやっているところに私にちょっとした指針を与えて、より良い方向に向ける。おかげさまで

+0

クエリの末尾にコンマが表示されますか?それを取り除く。 –

+0

ステートメントの最後にカンマがあります。 rtrim($ sql、 '、')それ –

答えて

1

値の後に余分なカンマがあります。代わりにarray_fillを実行し、次にimplodingとすることをお勧めします。

$rpt = array_fill(0,$times,"('$primary_name', '$primary_mobile', '$primary_country', '$primary_state', '$rand') "); 
$values = implode(',',$rpt); 
+0

すばやい返信ありがとうございます、これは完全に動作するように見えました。私はupvoted。 –

1

カンマが不要な場合でも、繰り返し挿入の最後にカンマが付いている可能性があります。また、私はその後、私はちょうどその決勝で非常に最後のコンマをトリム、あなたの文字列の末尾からスペースを撮影したクイックフィックス が$のランドは、(それはそこにあることを仮定しているのですか?)の後にセミコロンです

文字列。これにより、コードはほぼ同じに保たれます。

$rpt = str_repeat("('$primary_name', '$primary_mobile', '$primary_country', '$primary_state', '$rand;'),",$times); 
$rpt = rtrim($rpt,","); 
+0

愚かなことに、リピートの最後のカンマに問題があることを指摘してくれてありがとう。 –

関連する問題