如果你确实有一个名为table
表会更适合使用回蜱周围的名字,因为在字TABLE
是reserved word in MySQL。你也应该用在你变单引号,如果它包含一个字符串:
$sql = "SELECT `id` FROM `table` WHERE `first_name` = '$Name'";
其他可能的原因,如果查询仍然不为你工作:
- 确保您在连接参数正确的顺序。它应该是:
mysqli_connect($server, $dbuser, $dbpw, $dbname)
。
- 如果您希望获得单行结果,则应该使用
fetch_array()
而不是fetch_assoc()
。
- 当使用
mysqli_connect()
而不是mysqli()
时,您将PROCEDURAL STYLE与Object Oriented Style混合,同时使用面向对象的$result->
样式。你应该决定一种风格并坚持下去。
这将是您的查询的程序风格:
$Name = "Dick";
$conn = mysqli_connect($server, $dbuser, $dbpw, $dbname); // NOTE THE CHANGED ORDER OF CONNECTION PARAMETERS!
$sql = "SELECT `id` FROM `table` WHERE `first_name` = '$Name'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
$customer_id = $row['id']; // YOUR CUSTOMER ID
mysqli_free_result($result); // FREE RESULT SET
mysqli_close($conn); // CLOSE CONNECTION
而且这将是面向对象的风格:
$Name = "Dick";
$conn = new mysqli($server, $dbuser, $dbpw, $dbname);
$sql = "SELECT `id` FROM `table` WHERE `first_name` = '$Name'";
$result = $conn->query($sql);
$row = $result->fetch_array(MYSQLI_ASSOC);
$customer_id = $row['id']; // YOUR CUSTOMER ID
$result->free(); // FREE RESULT SET
$conn->close(); // CLOSE CONNECTION
我会建议在命名表别的东西比table
,因为这是一个保留字,可能会导致您解析问题。字段名也是一样。更多阅读:https://dev.mysql.com/doc/refman/5.5/en/keywords.html
更多mysqli_fetch_array()
和差异程序风格和面向对象式的使用:http://php.net/manual/en/mysqli-result.fetch-array.php
@JohnConde:在“倒退”的部分无关紧要。 –
不要忘记[启用异常](http://stackoverflow.com/questions/14578243/turning-query-errors-to-exceptions-in-mysqli),以便使错误变得可见。这里有什么特别的是正在进行的'Database :: disconnect()'调用,但是你已经创建了一个独立于此的句柄。 – tadman
您可能想添加到您的问题的任何错误日志? – Alfabravo