データベースにユーザーを追加するためにバッチアップロード機能を作成しようとしています。 、バッチアップロードのwhileループwhile mysqli結果なし
$excel = new Spreadsheet_Excel_Reader();
$excel->read($target_file);
$company = mysql_prep($_POST["company"]);
while($x<=$excel->sheets[0]['numRows']) {
$username = isset($excel->sheets[0]['cells'][$x][1]) ? $excel->sheets[0]['cells'][$x][1] : '';
$email = isset($excel->sheets[0]['cells'][$x][2]) ? $excel->sheets[0]['cells'][$x][2] : '';
//generate random password
$password = generate_random_password();
//hash the password
$hashed_password = password_encrypt($password);
$status = "Employee";
//save details in db
$result = add_single_user($username, $hashed_password, $email, $status, $company); }
このループの外から呼び出されたときに結果を返すadd_single_user機能:私は、DBへの単一のユーザーの詳細情報を追加して機能を持っている、と私は、Excelシートから読み込むwhileループ内からそれを呼び出します上記のようにユーザーを挿入することはありません。私は値がExcelのリーダーによって読み込まれ、割り当てられていることを確認しました。ここでは関数は次のとおりです。
INSERTクエリのfunction add_single_user($username, $hashed_password, $email, $status, $company){
global $connection;
$safe_username = mysqli_real_escape_string($connection, $username);
$safe_email = mysqli_real_escape_string($connection, $email);
$safe_status = mysqli_real_escape_string($connection, $status);
$safe_company = mysqli_real_escape_string($connection, $company);
$query = "INSERT INTO users (";
$query .= " username, hashed_password, email, status, company";
$query .= ") VALUES (";
$query .= " '{$safe_username}', '{$hashed_password}', '{$safe_email}', '{$safe_status}', '{$safe_company}'";
$query .= ")";
$result = mysqli_query($connection, $query);
return $result;
}
最初に簡単なデバッグ/トラブルシューティング:mysqli_queryが実行される直前に、$ query文字列を画面/ブラウザにエコーします。あなたが期待しているSQLが表示されたら - あなたのPHP管理SQLウィンドウにコピー/ペーストして、それをテストしてください – dbmitch
@dbmitchありがとうございます。前にコピー/貼り付けを試みましたが、これはトラブルシューティングのより良い方法です。私がそこにあったことを知らなかったデータベースフィールドの1つに制限がありました。とても有難い。 – SeemsLegit57