【问题标题】:Error when insert data with PHP to MySQL [duplicate]使用 PHP 向 MySQL 插入数据时出错 [重复]
【发布时间】:2018-06-01 07:30:20
【问题描述】:

发生了最奇怪的事情。我可以在 XAMPP 中很好地运行它。但是当我移动到使用套接字连接的服务器时,它会连接,但我无法插入。而且我想知道它是否由于套接字而我需要以不同的方式做事。我改为= new mysqli,因为mysql_connect 不适用于套接字。但除此之外,我有点失落。当我运行 test.php 时,我得到了

错误:()

Test.PHP

    <?php
    $dbhost = "localhost";
    $socket = ":/diskID/mysql/socket";
    $dbname = "TUTORIALS";
    $dbusername = "root";
    $dbpassword = "password";

    $mysqli = new mysqli($dbhost,$dbusername,$dbpassword,$dbname,$socket);

    //Output any connection error
    if ($mysqli->connect_error) {
       die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
    }

    $product_name = '"'.$mysqli->real_escape_string('P1234').'"';

    //MySqli Insert Query
    $insert_row = $mysqli->query("INSERT INTO tutorials_inf (name)VALUES($product_name)");

    if ($insert_row) {
        print 'Success! ID of last inserted record is : ' .$mysqli->insert_id .'<br />'; 
    } else {
        die('Error : ('. $mysqli->errno .') '. $mysqli->error);
    }

【问题讨论】:

  • 无论您如何连接到数据库,查询的语法都是相同的。 mysqli_connect() 应该和 new mysqli() 一样工作。我希望mysql_connect 只是一个错字。
  • 如果您更改您的 die() 调用会很有帮助,这样您就可以判断它是否在 new mysqli$mysqli-&gt;query 上失败。
  • 我不熟悉明确指定套接字,但尝试在开头去掉:
  • 您遇到了什么错误?
  • enabling exceptions in mysqli可以检测和解决很多问题,所以错误不容易被忽略。

标签: php mysql sockets mysqli


【解决方案1】:

在执行 MySQL 查询时,您应该使用单引号而不是引号。

尝试使用:

<?php
$dbhost = "localhost";
$socket = ":/diskID/mysql/socket";
$dbname = "TUTORIALS";
$dbusername = "root";
$dbpassword = "password";

$mysqli = new mysqli($dbhost,$dbusername,$dbpassword,$dbname,$socket);

//Output any connection error
if ($mysqli->connect_error) {
   die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}

$product_name = "'".$mysqli->real_escape_string('P1234')."'";

//MySqli Insert Query
$insert_row = $mysqli->query("INSERT INTO tutorials_inf (name)VALUES(" . $product_name . ")");

if ($insert_row) {
    print 'Success! ID of last inserted record is : ' .$mysqli->insert_id .'<br />'; 
} else {
    die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}

【讨论】:

    【解决方案2】:

    我不确定这是否是答案,但查询中的 $product_name 应该是带有单引号的 '$product_name'

    如果这不起作用,请在下面评论,我将调试整个代码

    【讨论】:

    • 他在作业$product_name = '"'.$mysqli-&gt;real_escape_string('P1234').'"';中添加引号
    • 我猜。 . .从来没有那样写过 php
    • 我同意这令人困惑,但它应该可以工作。添加引号的位置无关紧要。
    • @Barmar 你 100% 确定吗?尽管我以前从未遇到过类似的情况,但我同意值中的数据是一个字符串,应该用引号引起来。如果可以的话,我必须自己测试一下。
    • 我认为在这种情况下它确实很重要 - sql 在双引号内,变量也在双引号内
    猜你喜欢
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多