localhostを介してPHPmyAdminデータベースに配列を挿入するために多くの方法を試しました。これまでに機能したものはありません。あまりにも多くの異なるソリューションを混ぜ合わせているのではないかと思います。INTを間違って挿入しようとしている可能性があります。
私のソリューションはこのリファレンスに基づいています:https://www.phpflow.com/php/insert-php-array-into-mysql-table/
$result = array( "0" => array(1, "blah", "blah", "blah", "blah", 2, 3),
"1" => array(2, "blah", "blah", "blah", "blah", 4, 5));
$connect = mysqli_connect("localhost", "root", "", "test");
if(is_array($result)){
foreach ($result as $row) {
$fieldVal0 = (int) $result[$row][0];
$fieldVal1 = mysql_real_escape_string($result[$row][1]);
$fieldVal2 = mysql_real_escape_string($result[$row][2]);
$fieldVal3 = mysql_real_escape_string($result[$row][3]);
$fieldVal4 = mysql_real_escape_string($result[$row][4]);
$fieldVal5 = (int) $result[$row][5];
$fieldVal6 = (int) $result[$row][6];
$query ="INSERT INTO testtable ( id, english, navajoVerb, person, mode, verbNum, bookNum) VALUES ( '". $fieldVal0."','".$fieldVal1."','".$fieldVal2."','". $fieldVal3."','".$fieldVal4."','".$fieldVal5."','".$fieldVal6."' )";
mysqli_query($connect,$query);
}
}
mysqliはphp5.5.x以降は非推奨になっていると思いますが、とにかくデータベースやPHPを操作するときはPDOを使用することをお勧めします。データのエスケープも非常に簡単になります。
1:$ recordsはifステートメント内のどこから来ますか?そうでなければ、それを超えることは決してありません。
2:ネストされた配列内で数値を文字列として宣言しますが、型キャストが最適なソリューションであるかどうかはわかりません。整数だけを使用できます。
array(1, "blah" ....
これはうまくいくかもしれません:
$result = array( "0" => array(1, "blah", "blah", "blah", "blah", 2, 3),
"1" => array(2, "blah", "blah", "blah", "blah", 4, 5));
$connect = mysqli_connect("localhost", "root", "", "test");
if(is_array($result))
{
// First array ( 0 and 1)
foreach ($result as $key =>$row)
{
// We can just loop over the next array so we have to type less
// lets declare a new array with escaped results
$escaped_results = array();
// Now loop over the row
foreach( $row as $key => $value)
{
// if we don't set anything inbetween the brackets [] we tell php to auto fill the array
// so it adds a new array element starting from 0
$escaped_results[] = mysqli_real_escape_string($connect, $value);
}
// lets make the query easier and simpler
// we just use implode to build the values
$query ="INSERT INTO testtable ( id, english, navajoVerb, person, mode, verbNum, bookNum) VALUES ('". implode("','", $escaped_results) ."')";
// execute the query
$result = mysqli_query($connect, $query);
// catch the error
if (!$result) {
die('Invalid query: ' . mysqli_error($connect));
}
}
}
php用のPDOチュートリアルをいくつか入手することをお勧めしますが、それはあなたの生活をずっと楽にしてくれるからです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加