спасибо за то, что нашли время, чтобы прочитать это, и я заранее извиняюсь за то, как испортил мой код, я пытаюсь научить себя. Я сталкиваюсь с ошибкой, когда дело доходит до получения идентификатора строки, когда проверка выполняется, если имя, адрес электронной почты или телефон ввода совпадают с db. Я пытаюсь получить идентификатор, чтобы я мог связать этот идентификатор как «owner_id» сообщения, когда я его храню.mysql row id возвращает 0, когда он должен возвращать большее число
Fatal error: Call to undefined method mysqli_stmt::fetch_assoc() in /var/www/a-website.com/html/inc/db3.php on line 35
линия 35 является
while($row = $prepared_check->fetch_assoc()){
здесь весь файл PHP. его required_once в другом php-файле и запустить в этом php-файле, используя
checkRecords($name, $tel2, $email);
в любом случае, в файл php.
$run_check = 1;
function newInsert($name, $email, $tel, $mysqli){
$prepared_insert = $mysqli->prepare("INSERT INTO call_list (name, email, tel) VALUES (?, ?, ?)");
$prepared_insert->bind_param('sss', $name, $email, $tel);
$prepared_insert->execute();
$run_check = 1;
}
function storeMessage($id, $message, $mysqli){
$prepared_message = $mysqli->prepare("INSERT INTO messages (owner_id, message) VALUES (?, ?)");
$prepared_message->bind_param('ss', $id, $message);
$prepared_message->execute();
$prepared_message->close();
$run_check = 0;
}
function checkRecords($name, $email, $tel, $message){
$servername = "localhost";
$username = "a_valid_user";
$password = "some_valid_password";
$dbname = "call_list";
$mysqli = new mysqli($servername, $username, $password, $dbname);
if($mysqli->connect_errno){
$_SESSION['result_sql'] = "<div class='alert alert-danger'>Failed to connect to MySQL:(".$mysqli->errno.")". $mysqli->error."</div>";
}
$prepared_check = $mysqli->prepare("SELECT * FROM call_list WHERE name = ? OR tel = ? OR email = ?");
$prepared_check->bind_param('sss', $name, $tel, $email);
$prepared_check->execute();
$prepared_check->store_result();
$nm_rows = $prepared_check->num_rows;
$prepared_check->bind_result($id, $name, $tel, $email);
while($row = $prepared_check->fetch_assoc()){
echo "grabbed ". $nm_rows ." results<br><br>";
if($nm_rows === 0){
echo "trying to insert<br><br>". $name ."<br><br>". $email ."<br><br>". $tel;
newInsert($name, $email, $tel2, $mysqli);
}else{
echo "i'm trying to store a message with the owner id of ". $row['id'] ." who should be".$row['name'];
echo "<br><br> here's the message: <br><br>". $message ."<br><br><br>";
storeMessage($id, $message, $mysqli);
}
}
}
Я думаю, вам нужно предоставить источник функции 'fetch_assoc()', поскольку он не отображается в вашем вопросе. – cbillowes
'mysqli_statement' не имеет метода' fetch_assoc'. Из вашего кода вы потенциально просто хотите 'fetch'. –
Почему сообщение об ошибке, подобное этому, недостаточно для исправления? Разве это не очевидно? –