Bakit ganito

loktoy

Established
kapag maiksi sinulat ko ok sya may output pero kapag mahaba na text ito error nya

Fatal error: Uncaught mysqli_sql_exception: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'comment'])){ $comment_content = $_POST['comment_content']; $post_id=$_POST[...' at line 1 in C:\xampp\htdocs\Innerjoin\user\comment.php:39 Stack trace: #0 C:\xampp\htdocs\Innerjoin\user\comment.php(39): mysqli_query(Object(mysqli), 'INSERT INTO pos...') #1 {main} thrown in C:\xampp\htdocs\Innerjoin\user\comment.php on line 39
ito code ko

if (isset($_POST['post'])){
$page_content = $_POST ['post_content'];
$pagecontent = $_POST ['postcontent'];



mysqli_query($con,"INSERT INTO post (comment,title,date_created,user_id) values ('$page_content','$pagecontent','".strtotime(date("Y-m-d h:i:sa"))."','$user_id') ")or die(mysqli_error());

}
?>
 
Ang error na binanggit mo ay nagsasabi na may mali sa syntax ng iyong SQL query. Ayon sa error message, ang isang posibleng dahilan ay ang mahaba mong text sa $page_content o $pagecontent na maaaring nagiging sanhi ng pagkakaroon ng invalid syntax sa query.

Para maayos ito, narito ang ilang mga hakbang na maaari mong gawin:

1. Siguraduhin na ang mga string variable na ginagamit mo sa query ay maayos na naka-quote. Maaari mong gamitin ang mysqli_real_escape_string() function upang maiwasan ang mga syntax error na maaaring dulot ng mga espesyal na karakter sa mga string.

Halimbawa:

PHP:
$page_content = mysqli_real_escape_string($con, $_POST['post_content']);
$pagecontent = mysqli_real_escape_string($con, $_POST['postcontent']);

2. Gumamit ng prepared statements o parameterized queries upang maiwasan ang SQL injection at mas ligtas na mag-execute ng mga SQL queries.

Halimbawa:

PHP:
$stmt = mysqli_prepare($con, "INSERT INTO post (comment, title, date_created, user_id) VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, "sssi", $page_content, $pagecontent, strtotime(date("Y-m-d h:i:sa")), $user_id);
mysqli_stmt_execute($stmt);

Sa pamamagitan ng paggamit ng prepared statements, ang mga parameter ay nai-insert sa query gamit ang mga placeholders (?). Dito, ang s ay nagpapahiwatig na ang parameter ay isang string, at ang i ay nagpapahiwatig na ang parameter ay isang integer.

3. Siguraduhing ang mga column names na iyong ginagamit sa query ay tamang-tama at nag-e-exist sa iyong database.

4. Siguraduhin na ang iyong database connection ($con) ay maayos at tama ang mga credentials.

Umaasa ako na makatulong ito sa iyo upang maayos ang iyong error. Kung mayroon kang iba pang mga katanungan, mangyaring sabihin lang.
 

Similar threads

About this Thread

  • 3
    Replies
  • 433
    Views
  • 2
    Participants
Last reply from:
loktoy

Trending Topics

Online now

Members online
561
Guests online
1,654
Total visitors
2,215

Forum statistics

Threads
2,290,071
Posts
29,062,258
Members
1,213,163
Latest member
Jhondimalaman
Back
Top